当前位置: 首页 > Linux

不懂这些BAT大厂面试“潜规则”,难怪被面试官虐的怀疑人生

时间:2023-04-06 12:09:18 Linux

如果连这些BAT大面试的“潜规则”都不懂,难怪被面试官虐了。你会遇到以下困惑。这些同学表示,他们也做了精心的准备,在网上搜集了很多Java面试题。然而,当我真正去一家互联网公司面试的时候,却发现人家问的和你准备的不相符。面试现场常常弥漫着尴尬的气氛,最后的面试结果不言而喻!二、先体验一把真实的采访连环枪。那么,为什么会发生在这些兄弟身上呢?首先我们来看看真实的一二线互联网公司的面试场景,看看大公司的面试官是怎么提问的。简单来说,现在一些大中型互联网公司的面试官在面试应聘者时,普遍采用连环枪策略,深入挖掘应聘者的技术水平。例如,假设您熟悉简历上写的消息中间件(MQ技术)。那么可能我们会有类似下面的一系列问题:请问你们公司的线上生产环境用的是什么消息中间件?那么你们在线系统的技术挑战是什么,为什么要在系统中引入消息中间件呢?你的消息中间件技术为什么选择RabbitMQ?为什么不使用RocketMQ或Kafka?技术选择的依据是什么?如何保证消息中间件的高可用?避免消息中间件故障导致系统整体故障?在使用消息中间件技术时,如何保证传递的消息不会丢失?你如何保证只有一条且只有一条消息被传递,并且不会有重复的数据?消费重复消息如何保证数据的准确性?在线业务使用消息中间件时,需要保证消息的顺序吗?如果不需要保证消息顺序,为什么不呢?如果我有一个场景来保证消息的顺序,你应该怎么保证呢?如果下游消费系统宕机,导致消息中间件积压百万条消息,这时候怎么办?您是否遇到过在线消息积压导致的生产故障?如果没有遇到过,你怎么看?你在使用RabbitMQ吗?那你说说RabbitMQ的底层架构原理、逻辑架构、物理架构和数据持久化机制?你的RabbitMQ每秒最高峰值QPS是多少?线上是怎么部署的,部署了多少台机器,机器的配置是怎样的?你在使用卡夫卡吗?那你说一下Kafka的底层架构,数据是怎么存储在磁盘上的,整个分布式架构是怎么实现的?下面说说Kafka是如何保证数据的高容错性的?零拷贝等技术是如何使用的?高吞吐量下如何优化生产者和消费者的性能?你看过Kafka的源代码吗?如果你看了,说说你对Kafka源码的理解?你在使用RocketMQ吗?RocketMQ的一大特色是它对分布式事务的支持。能谈谈它支持分布式事务的机制的底层原理吗?你看过RocketMQ的源码,说说你对RocketMQ源码的理解?如果让你实现一个分布式消息中间件,你会如何设计和实现整体架构?以上只是MQ相关技术问题的一部分。其实比较好的面试官的问题是从技术方面、技术要点、项目实践等方面来提问。3、技术广度的考察首先考察应聘者技术方面的完备性,因为工作中需要一定的技术眼光。不能说你只知道消息中间件,而对分布式缓存一无所知。类似于之前的高考,你语文很好,但是物理成绩很差,不适合。所以工程师首先要避免自身技术上的短板,尤其是有三五年经验的同学,已经完全过了职业生涯最初的菜鸟阶段。所以,在工作三五年的时候,一定要保证自己的技术绝对没有短板,对整体的技术栈要多多少少有所了解,不能有死角。比如我现在问你,你们公司有没有业务场景可以使用NoSQL?国内各公司使用的NoSQL技术有哪些类型?NoSQL可以解决哪些具体问题?三个问题都不知道,这是典型的技术短板。你至少需要对每种技术一般在什么时候使用,如何使用,解决什么问题有一个大概的了解。所以,上面提到的消息中间件、分布式缓存、海量数据、分布式搜索、NoSQL、分布式架构、高并发、高可用、高性能技术。并不是真的要求工作几年的同学一定要精通源码级别。意思是工作几年后,你应该有一定的技术广度和开阔的技术视野。4、底层技术考察现在很多互联网大公司都有基本功考察。比如Java虚拟机的核心原理,内存模型,垃圾回收,在线FullGC冻结性能优化,在线OOM内存溢出问题等。.volatile、锁优化、Java并发中的AQS源码;Netty背后的IO和网络相关知识。事实上,这种底层技术对于在线高负载大型系统的架构设计和开发是必须的。由于底层技术不扎实,很多中间件或其他高层技术无法深入理解其原理。而很多时候,需要这些技术来解决线上系统的生产故障。因此,对底层技术的掌握是一个优秀工程师必备的素质。5、技术的深入考察此外,我们肯定会考察一些考生熟悉的、日常工作中常用的技术。例如,如果您在项目中使用Redis或Elasticsearch。只要你用过,而且是你某个项目中的核心技术,那你肯定会用一系列的问题去深入到各种细节、底层,以及生产中可能遇到的技术挑战环境。简而言之,就是用压力来测试你在这个技术层面掌握的有多深,你的实践经验有多强。一个好的面试官,技术基础扎实,可以针对一个技术提出一系列的问题,比如上面的消息中间件。并且只要面试官的技术深度超过应聘者,就可以通过不断深化问题来考察应聘者在自己最熟悉的技术领域的技术深度。举个例子,你对某项技术的掌握有没有达到源码级别?是否深入了解某个框架或中间件的底层源码实现,并从源码层面理清其架构原理?是否有在线高可用部署该技术来承载高并发访问?这项技术是否解决了在线生产环境中各种复杂的技术挑战?在你的业务系统中是否可以基于该技术设计出各种复杂的系统架构?通过这一系列的枪法,很好的考察一个候选人对技术深度的掌握。技术深度考察是大中型互联网公司面试官考察一个资深/资深候选人的必经之路。因为如果一个人工作5年以上,申请高级职位,那我们肯定要求他至少对一个技术领域有深入的研究。比如,至少你得把某个热门技术的核心源码读透,有一定的技术基础,能解决一些复杂的线上故障。技术的广度决定了你可以使用各种技术来做项目,但是技术的深度决定了你的技术水平。未来学习新事物的速度有多快,能否快速定位并解决线上系统故障,能否基于对技术的深刻理解,为公司的项目设计开发复杂优秀的架构,都取决于in技术深度。6.总结总结一下,在这篇文章中,我们用面试连环枪来引出大中型互联网公司的面试官通常是如何提问的。那么,从技术广度、底层技术、技术深度等角度,我们一般如何考察候选人的技术。知己知彼,百战不殆。面试也是如此。只有真正了解面试官的选择标准和考察范围,才能更好的做好针对性的准备,成为行走的“offer收割机”END人公众号:Java架构师联盟,每日更新技术面试文章