面试经验|快手丨后端丨面经
1922
2021.07.22
发布于 未知归属地

【一面】

多线程

1.线程创建的方式

2.线程池机制,为什么corePoolSize,阻塞队列,maxPoolSize怎样处理?

3.线程池的线程怎么做到不回收的?

4.线程同步的方式

5.知道的锁优化(不说synchronized,我说了readwriteLock的锁降级过程)

6.AQS原理,(CLH)

7.自旋锁的unsafe怎么实现的

JVM

1.weakReference提到了ThreadLocal

2.讲了具体ThreadLocal的实现,以及防止内存泄露

3.在应用侧,线程池用ThreadLocal的时候,如何一个任务执行完清除?

4.ThreadLocal是采用开放寻址法

5.是不是可以实现线程池的钩子函数afterExecute ?

6.有框架可以实现嘛,还是必须业务去做?

7.java内存分布

8.堆的区分

9.什么时候gc会影响应用的可用性

10.强,软,弱,虚引用

Spring

1.面试官说我不了解源码就没继续追问了

2.IOC和AOP

3.不加注解就能对所有的方法做一些事前log和事后的log(不能用AOP),怎么实现?(我说要么代码重写,要么字节码增强)

设计题(业务设计不太擅长)

1.数据库怎么设计?

2.缓存怎么设计?

3.如何保证几次查库的一致性?(要么唯一key,或者布隆过滤器)

4.邀请好友给自己涨钱的实现(数据量30E),并且用户A给用户B涨完钱,用户B不能给用户A涨钱,每个人每天有5次助力(一天有限期)

算法题

1.leetcode 92. 反转链表 II

★戳我主页,可以领取一线互联网大厂面经pdf~

【二面】

面试官说,不论去哪儿,做的开心是最重要的~

项目

1.Redis分析

Java

1.可重入怎么实现?

2.如何保证原子性?

3.为什么删除的时候要重新get一下?

4.需要保证删的这个服务实例拥有锁?

5.1.7 两级hash

6.1.8 volatile + CAS + synchronized

7.concurrentHashMap

8.分布式锁

数据库

1.事务

2.索引

Kafka

1.如何保证有序?

算法

1.令牌桶,Java里面的RateLimiter

2.计数器法

3.漏桶算法

4.时钟回拨

5.雪花算法

6.限流算法

7.最长递增子序列(dp)

【三面】

项目or成长

1.分工

2.遇到的问题

3.Redis和Memcached的区别(讲了一下多线程)

4.线上压测(toB没有公有云业务)

5.为什么到了现在这家公司?

6.为什么做测开?

7.竞赛经历

场景

1.超发如何解决?

2.抢红包设计

offer

1.问了我现在的offer情况

【四面】

不知道为啥换了个组,分析用户画像的(大数据相关)

复盘

1.之前面试的问题,有没有去再学习?

项目

1.遇到的问题

2.压测过https, rpc么?

3.rpc压测解决方案

设计

1.看过kafka的paper,按照paper的思路去说了

2.让你去设计注册中心,配置中心,网关

3.注册中心如果使用zk, 大量实例的同步会变慢,解决方案

4.配置中心

5.分区域去用注册中心(分片策略)

6.service mesh 交给sidecar容器去处理rpc的路由情况

7.队列存增量的配置修改信息,服务实例定时去拉队列

8.配置刷新怎么去做?

9.Spring Cloud

10.设计消息队列

算法

1.两种实现,分析算法复杂度

2.一个机器down掉,数据会怎么分布

3.考虑虚拟节点的情况

4.一致性hash

5.k个有序数组合并

评论 (1)