写在开头的闲言碎语
2020年过去了,对很多人来说,这一年经历了太多太多,可能是十年来记忆里比较浓墨重彩的一笔。过去的一年里,“熬”算是这个阶段我的关键字,确实太多时候就要放弃,好在自己“熬”过去了,在新的2021年里,也有个一个非常好的开端,我收获了心仪的斗鱼offer。
简单来说,就如标题一样,过程其实很艰难,三顾茅庐,七面斗鱼,才拿到了我心仪的offer,为什么是七面斗鱼?实际我从大二开始就已经在按照老师教的方法去面试,为什么?因为一些大厂招聘要求就是我们程序员学习道路上面的指南针,所以前前后后总共面试了7次,虽然目前是实习岗位,也不太清楚是什么部门(斗鱼实在好多漂亮的小姐姐主播)但是我已经心满意足,别问我为什么还记得面试题,有记录和复盘的习惯,再问就是杠,下面就细细聊聊我的大厂面经吧,希望能够给金三银四要面试的朋友提供一些经验。
面经分享是想给正面试的同行一些建议和鼓励,希望点赞支持
One:三顾茅庐,五面斗鱼,拿下20K*16offer
一顾斗鱼一面被怼(未知部门)
说说为什么要选择斗鱼? 你之前做过的项目说一下 针对项目的难点进行提问,如何解决的,在这个问题中有什么收获?怎么避免再次? 讲一下TCP有哪些机制可以完成可靠传输? TCP为什么有三次握手? 讲一下HTTPS通信的建立机制 虚拟内存的作用,知道吗? 讲一下程序编译的原理 讲一下MySQL 语句执行的过程 MySQL 的缓存会失效吗? MySQL 前缀索引 假设建立联合索引(a, b, c)如果对字段 a 和 c 查询,会用到这个索引吗? MySQL 主从同步机制,如果同步失败会怎么样? 讲一下布隆过滤器的实现原理 网络安全相关 XSS ? 有了解哪些加密算法? 秒杀系统后台如何设计? 最近在学习什么?学了哪些?有哪些收获? Kafka 存储机制是怎样的? Kafka 发送消息是如何保证可靠性的? 你有没有什么想问的?
二顾斗鱼二面惨败(菜鸟网络)
先说说你做的项目吧 然后又是针对项目进行了一系列的提问 你在需求里做了什么? 说一下你对Redis的可用性和效率的理解 Redis 索引是什么? MySQL 事务隔离界别有哪些?哪些情况下分别采取什么样的隔离级别? RR 隔离级别如何解决幻读? MySQL 有哪些索引?什么情况下采取什么样的索引?和 Redis 的索引和 MongoDB 的索引相对比 ? JVM 关于 GC 相关的参数了解哪些?在什么情况下采取什么样子的参数设计 Java线程池原理及其应用场景 Concurrent并发包里几个类介绍一下 HashMap求hash值的时候,无符号右移16位的意义 解决hash冲突的几种方法,在哪些地方用哪种 tcp粘包和拆包的方法,tcp可靠性通过哪几个方面保证 数据库索引结构,为什么是B+树?
三顾斗鱼直播网络三面
自我介绍,这次着重介绍自己的项目经历和项目总结。 介绍项目,我刚说第一个就被面试官打断了,感觉要开始怼我,直接问有没有更亮点的项目。然后我介绍了另一个比较难的项目,讲了一些业务背景以及使用到的技术栈,不知道为什么面试官没有拓展开继续问下去了。 网络协议有哪些? 讲讲ThreadLocal的作用,是否线程安全? 进程间的通信 TreeMap讲解,里面有什么属性,entry里有什么属性? Java里有哪些是不需要加锁的同步方法? 行锁和表锁的区别、场景 组合索引的使用,eg. (a, b, c)索引,where a=x;where b=x;where a=x and b=x;哪个能使用索引? ArrayList和linkedlist的区别? 有哪些集合类是线程安全的? 算法:(1)排好序的数组,找2个数的和为M的所有组合;(2)大数据下,找出出现频率topK的ip 上家公司的研发部门有哪些组?大致的工作内容是什么?一个组多少人?你在什么组?负责什么? 离开上家公司后,在看什么书?学习什么技术?(回答在研究Dubbo和MySQL,还看了一些底层实现的东西) 截止目前,你自己感觉面试表现怎么样? 你有没有要问我的?
HR面:
平时是怎么学习的? 有什么兴趣爱好? 觉得自己前面几轮面试怎么样? 除了Java还研究过其它什么技术?(我回答的AI) AI能介绍一下吗? 怎么看待国内AI的发展?你对AI的看法是什么样的? 跟我说一下你认为最具有挑战性的项目? 面试官对你印象都挺好的,我很好奇你怎么克服工作以后再去学习遇到的困难的?
斗鱼5面
自我介绍,直接问到了技术栈。(这次优化了自我介绍的内容,主要围绕4个点去讲。自报家门、项目经验、技术栈以及求职愿景) 根据项目来提问,技术问题(这部分大致是对你的整体价值观做宏观的把控,包括上进心、责任心、心态以及工作激情等) 在项目中遇到了哪些比较棘手的问题?是如何解决的呢? 目前系统支撑的用户量是多少?假如用户量提升10倍,系统会出现什么样的问题?如何重新设计系统?(这部分就是主要考察你对问题的预见能力、解决能力,考察你对项目、问题解决的整体思路) 使用memcached是一个什么样的原理? 如何存放数据到memcached集群中,介绍一下这个过程。跟进的问题,讲一下一致性哈希算法的实现原理。 JVM中堆是如何管理的?JVM的内存回收机制,介绍一下 分布式事务实现方式 热点账户问题(项目中有就会问到) 类加载委托机制 锁的应用 项目架构 最后一问:你觉得你在同事眼中是一个什么样的人?
工作位照片:
Two:三顾斗鱼,五轮面试,我的经验复盘
1.斗鱼面试注意事项
部门选择:从这5次面试经历来看,部门不同,问到的技术栈都有所区别,所以在面试前最好是根据自己所面试的部门做相应的准备。
岗位选择:根据岗位介绍能够洞见的关键信息并不多,基于有限的信息,所谓合适通常需满足以下几点:①自身的核心竞争力与所应聘的岗位具有较高的匹配度;②对岗位的工作内容感兴趣,至少不排斥;③岗位所在的业务具有良好的前景;④工作地点可接受。
应变能力:几轮面试下来,给我最大的一个感受就是一定要培养自己的应变能力。在面试过程中,面试官会根据和你交流的过程中,找一些细节进行提问,一旦应变能力不强,就容易慌了张影响面试发挥,导致失败。
2.面试核心知识点梳理
除了斗鱼以外,其他七七七八八的互联网公司我也面过不少,因为深受学校老师的影响,不说身经百战,那也面临过一些枪林弹雨的。所以,对于面试会问到什么技术栈,还是做了一些详细的梳理,这些面试梳理还是相当有说服力的。
针对面试核心知识点的梳理,我提供了以下的思维导图和面试核心点PDF:
- Java面试核心知识导图
- Java面试核心点PDF
3.简历优化
不要以为简历只是一个 “敲门砖”而已,事实上,它将伴随你走过应聘流程中的几个关键环节:简历评估,技术面试,HR 面试。
一份优质的简历有助于应聘者展示自己的能力和优势,同时,也可以为面试官提供 “提问指导” (通常面试官会根据简历内容有针对性地提问,有的放矢),因此不断去优化自己的简历是很有必要的。
关于简历,我可以提供我个人的简历模板给你参考:
Three:我的未来规划(知足常乐,但不安于现状)
1.职业规划
程序员职业发展一般分三条路:
技术
管理
创业
放到自己身上来看,很显然,没有创业的头脑,那这条路自然是行不通的。那走技术还是走管理?实际上并不需要过早定下来,等到一定年纪自然会开始方向的转移,但无论是走技术还是管理,一开始就要把技术打得扎实,由此,对于技术痴迷的我,先以技术路线为主,管理路线为辅。
2.学习规划
说得难听点,程序员不学习,那就是在“等死”,尤其是对于大厂程序员来说,因此接下来的时间要有一个清晰的学习规划。
我的学习规划如下:
- Step1:按照技术路线图学习
- Step2:啃完这些电子书籍和技术笔记
- Step3:利用碎片时间看视频学习
3.业余规划
搞副业:用业余时间搞点副业还是ok的,接点小项目,或写写博客(正在做)。
混论坛:混迹各大程序员知名论坛中,如GitHub等,能够参与开源最好不过。
交朋友:加一些社群,参加线下面基,结识一些同行朋友,或许能碰撞出一些不一样的代码火花?
写在末尾:一些建议和行业愿景
最后我想说,写这篇文章,并不是为了什么制造恐慌,更多地是想要告诉大家,无论你的起点如何,都应该保持热忱,无论你身处什么阶段,都不能停止学习,这个社会节奏太快了,一旦停下你可能就被淘汰,需要耗费加倍的精力去追赶。
无论985、211,还是大专生,都应该拥有掌控自己人生的能力和权力。起点并不重要,重要的是,终点在哪,完全取决于你。
今年金九银十结束了,明年金三银四的你会是什么样?现在开始出发,拿到心仪offer还是很容易的。希望来年的你,收到不一样的惊喜!
如果你对我上面的这些总结感兴趣的话,戳我GitHub