Appearance
面试会如何问八股
虽然现在纯问八股的公司不多,但还是有一些公司上来就会先问八股,作为一个工作了16年的架构师,如果要问八股文一般会怎么问,那我一般会从技术广度开始考察,看看候选人对各种技术的了解程度。比如,我会问他有没有用过消息中间件,分布式缓存,分布式搜索,NoSQL,高并发,高可用,高性能这些技术。因为在工作中,我们需要具备一定的技术视野,不能只懂某一个技术点,而对其他技术一无所知。就像高考一样,不能语文特别好,物理特别差,这样是不行的。尤其是有三到五年经验的候选人,已经过了初期菜鸟阶段,应该避免技术短板,保证整体技术栈的广度。
接下来,我会深入考察候选人的技术深度。比如,如果他在简历上写了熟悉消息中间件,我会从多个角度发问,看看他是不是真的熟悉。比如,我会问他公司线上生产环境用的是什么消息中间件,为什么要引入消息中间件,为什么选择RabbitMQ而不是RocketMQ或者Kafka,怎么保证消息中间件的高可用性,怎么保证消息不丢失,怎么处理消息重复,如何保证消息顺序,遇到消息积压怎么处理,等等。这些问题会一步步深入,考察候选人对消息中间件的理解和实际应用能力。
然后,我会考察候选人的底层技术功底。比如,Java虚拟机的核心原理,内存模型,垃圾回收,FullGC卡顿性能优化,OOM内存溢出问题怎么处理,Java并发中的volatile,锁优化,AQS源码,Netty背后的IO和网络相关知识。这些底层技术是线上高负载大型系统的架构设计和开发必须具备的。如果候选人在某个技术上的深度超过我,我会通过不断加深的发问,考察他在自己最熟悉的技术领域的技术深度。
最后,我会从项目经验和系统设计的角度考察候选人。比如,我会问他有没有设计过高并发高可用的系统,遇到过哪些技术挑战,怎么解决的,是否对某个框架或者中间件有深入的理解,是否对这个技术有过线上的高可用部署,承载过高并发流量的访问,是否基于这个技术设计出复杂的系统架构,等等。通过这些问题,我可以全面了解候选人的技术能力和项目经验。
总的来说,我会从技术广度、技术深度、底层技术、项目经验和系统设计几个方面,全方位无死角地考察候选人。这样才能真正了解候选人的技术水平,找到最合适的人才。
更新: 2024-08-26 22:28:28
原文: https://www.yuque.com/tulingzhouyu/db22bv/gus01vdza39ekdzs