秋招面经-快手-Java开发工程师

1、自我介绍

2、项目一拷打(10min)

3、Java中线程池任务提交的流程是怎样的?

4、线程池的拒绝策略有哪些?

5、提交到任务队列的任务,它的消费策略是怎样的?

6、如果是无界队列,还需要非核心线程吗?

7、无界队列存在什么问题?一般在什么场景下使用无界队列?

8、谈谈 Java 里面锁消除和锁升级

9、synchronized 可重入吗?能保证可见性吗?

10、某个服务 CPU 利用率到 100% 了,如何排查?

11、如果是 OOM 了怎么排查?

12、自己有用过 jmap 和一些工具去排查过错误吗?

13、MySQL 有几种事务隔离级别?从低到高说

14、什么是幻读?

15、MySQL 是怎么去解决幻读问题的?

16、谈谈 Kafka

17、为什么项目中技术选型用的是 RabbitMQ?

18、RabbitMQ 的数据持久化是怎么做的?

19、线程和进程的区别?

20、线程的安全怎么保证?

21、进程通信的方式有哪些?

22、进程间通信,它的数据传输大概是怎样的流程?怎么能让数据从一个进程传递到另一个进程去?

23、Redis 常用的数据结构有哪些?

24、谈谈 ZSet 的具体实现?为什么数据规模大的时候采用跳表而不是压缩列表?

25、查一个有序集合里面元素的个数,复杂度是多少?命令是什么?

26、取有序集合某个元素的分数,命令是什么?复杂度是多少?

27、做题:给你一个有序的且含有重复元素的数组,找出某个元素出现的次数。例如 nums = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4],再给定一个 target,如果目标值为 1,则返回 1,因为 1 只出现了 1 次;如果目标值为 2,则返回 2,因为 2 出现了 2 次;以此类推。(利用有序的条件,通过二分查找去找 target 值的左右边界,然后右边界减去左边界的值即可)

28、反问

全部评论
感觉还是有点难度的呀,兄弟,有信心吗
点赞 回复 分享
发布于 09-04 16:57 广东
看到考这么难,我就放心了,只要不是我一个人考这么恶心,就好
点赞 回复 分享
发布于 09-04 14:08 四川

相关推荐

09-04 13:06
已编辑
中南大学 C++
指全程被面试官碾压太菜了猫猫开局自我介绍都没有,直接两道hard起手(hot100),言下之意撕不出来也不用自我介绍了。撕完25min,面试官找了十分钟会议室,然后看了五分钟我的代码,40min时正式开始面试。总计90min。面试官每次是引入一个话题,然后根据我的回答进一步问问题,一直问,一直问,直到我回答不出为止。最重要的是!他不是一个问题一个问题问的,他是一堆问题一堆问题问的!我他喵前一句没回答完,他又问十句!记不太清他问的啥了,只能根据录音里我的回答内容反推一下,问题仅供参考1.自我介绍2.实习转正情况Raft开始3.介绍raft4.何时发起leader选举5.如何避免选举失败(超时时长随机化)6.raft集群有没有不可用的时间,比如日志提交时?无,高可用,日志写入期间向leader读老日志7.为什么要大于N/2的节点确认后才提交日志,小于N/2行吗?不向从节点确认行吗?8.raft如何保障leader的日志是最新的raft这块结束,猫猫个人觉得答得还行,没有被某个问题卡住网络开始9.读过nginx源码没咋可能读过(10.TCP长连接和短连接,什么时候用低频次、无状态、非交互式的场景用短连接,其它的一般长连接11.心跳有什么用检测异常连接,防止中间设备如NAT、防火墙等清除会话(这里一开始记错了,说成了是TCP长时间没消息会断开连接,引得面试官质疑,当场百度,我忏悔呜呜,TCP有keep alive,默认不开启,不会自动断开连接,但是中间设备会自动清除会话)OS开始12.C++和Go的区别,从服务端编程的角度讲讲13.C++和Go的协程实现对比14.协程什么时机切换15.协程比线程的优势16.协程切换,需要保存哪些上下文?答得PC、SP,寄存器中一些其它值17.寄存器中保存了哪些信息?我说局部变量、参数、临时值啥的,这里面试官质疑了一下,我又说和CPU架构有关,x86和RISC-V这些不同18.上下文保存在哪里我回答栈,或者特殊的页面上,和架构有关19.函数调用时如何切换上下文的函数调用信息保存在栈帧中,通过栈帧指针实现函数跳转20.具体一点,说说函数调用的过程,哪些信息保存在哪里,哪些是调用者保存的哪些是被调用者保存的真记不清了,猫猫举了一个进程的例子,进程的栈中切分为多个函数的栈帧,按函数的调用顺序从下至上布局,通过栈帧指针的移动实现函数调用,同时函数的局部变量、返回值之类的保存在栈帧中,总之我答得很模糊,面试官不太满意。21.虚拟内存22.TLB为什么快TLB可以缓存,页表查找是需要多级映射23.吧啦吧啦,问了一堆问题,大概就是问虚拟内存要怎么分配,物理内存又要怎么分配答了写时复制的一点东西,先分配虚拟内存,实际要用时触发page fault,分配物理内存24.哪些内存分配在栈上,哪些内存分配在堆上,咋分配的,通过啥函数分配局部变量啥的在栈上,动态分配的在堆上,小内存用brk,移动堆顶指针,连续的,大内存用mmap,创建独立的内存映射。(其实还有个内存池,忘了)25.mmap分配的内存在哪栈和堆中间的内存映射区26.内存布局,内核态和用户态在哪27.为什么进程切换比线程慢页表切换、CPU缓存命中率降低(这一点被面试官质疑了,没搞懂他的说法)28.切换页表的过程为什么会很慢?难道不是就一个页表指针切换的事吗?蒙了,我解释了一下两个进程位于不同的地址空间,实际上没有“指针”这种说法,但还是解释不出为什么页表切换为什么慢。经过面试官提醒,是TLB刷新的原因,页表切换其实是很快的,关键在于TLB会完全刷新。OS到此结束C++开始29.静态多态、动态多态30.程序运行过程中,是如何找到vptr的?如何根据vtable确定要执行哪个虚函数?31.vptr属于类还是对象的,在什么时机创建,存放在哪里32.这里答得很一般,让我从类的内存模型思考一下33.普通函数和虚函数的虚拟地址是什么确定的?是编译链接期间还是运行期间?34.父类指针指向子类对象,为什么程序能知道调用的是子类对象的方法?到底是怎么做到的?对象怎么拿到vptr的?35.引申了一下C++程序执行的四个阶段,链接阶段如何进行符号解析和重定向总得来说还是在围绕虚函数还有程序动态运行时的地址分配来谈,但这一段猫猫答得很乱,虚函数还是得下去仔细看看36.反问,看中校招生哪些能力
不爱吃番茄的番茄酱:汗流浃背了
我的秋招日记
点赞 评论 收藏
分享
评论
4
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务