一、个人情况
本科专业自动化,软开0基础,嵌入式方面做过一点。硕士中部某中等985,专业控制科学与工程,研究方向偏理论。2019年确定找软开,前期想着找cpp方向,但是也没咋准备,断断续续就刷过牛客cpp方向的一些选择题,属于看了就忘那种,没啥用。2019年年底,大概11月左右确定找Java开发这一方向,这个时候才开始Java入门。十分感谢王老板和康熙两位大佬,参考大佬们的找工作经验总结,让我的准备过程更有规划和目的性,事半功倍。
offer情况
过了的公司:
没过的公司:
二、学习时间线
- 2019年11月,中途断断续续有看过菜鸟教程--Java方面的资料。
- 2020年春节结束后,正式开始找工作阶段的学习。个人觉得最重要的是要分阶段定任务目标,这样才能比较有效和针对性的准备;
- 2020年02月-03月,剑指offer刷题 + 《剑指Java面试-Offer直通车》视频学习 + 简单的项目练手 + SSM视频学习,这我标出的视频网上搜一下应该能找到资源;
- 2020年04月,主要针对面经学习,《JavaGuide》+ 《Java-Interview》 + 《CS-Notes》 + 一些关注的技术公众号;
Java Guide: https://snailclimb.gitee.io/javaguide/#/?id=java
CS-Notes: https://github.com/CyC2018/CS-Notes
- 2020年04月--05月中旬,一边看面经的同时,一边投了一下实习岗位练练手,投的是腾讯和阿里。这段时间主要是在牛客网上搜对应公司的面经进行准备;
- 2020年05月下旬,系统进行刷题方面的知识点学习;这里推荐y总的Acwing,y总讲课我觉得一级棒。
- 2020年06月-07月中旬,完善简历项目;
- 2020年07月下旬-08月上旬,开始投递秋招提前批 + 刷题;
- 2020年08月中旬-09月上旬,笔试+面试,空闲之余就进行笔试面试复盘和刷题;
- 2020年09月上旬,各家意向基本就来了,我的秋招差不多就结束了。
三、个人总结
- 投的早很重要,就算没准备好也不需要太在意,我就是边面边学的,在面试者中不断去发现问题;
- 每次的笔试面试都要进行复盘,可以凭印象找到自己的薄弱环节,有针对性的去多看看这方面的问题;
- 面经一般都写的比较浅,如果面试要想有突出亮点,个人建议在某方面自己多挖深一点,不要仅仅停留在面经层面的答案。针对某些知识点的学习,个人建议不要只背答案,亲自实践一下会好很多。就拿计算机网络来说,网上其实有很多的资料,看了也不一定记得住,但是自己去抓包分析看看,可能会更加理解一些;
- .面试的时候有回答不出的问题和正常,但是不是只有会和不会这两种答案,可以回答这个我虽然不太懂,但是在哪本书或者网上看到过相关的,然后想办法把话题引到你懂的方面;
- 关于项目,很多人其实都是找的网上的开源项目,都是千篇一律的;个人觉得要么你再这个项目上是否可以考虑包装一下;要么再这个项目某一方面钻研的深一些。
- 关于简历,简历上的技术栈,不用贪多,写上自己熟练的即可。你写的每一个字,都会被面试官拿着来问你的,所以不是很懂的建议不要瞎写。
- 关于刷题,我在做题这方面比较菜,如果投的早的话,其实笔试会比较少的。拿字节来说,我被捞了3次,目前总共面了8次,但是1次笔试都没做过。面试中的手撕代码是肯定有的,但是都是基本题型。所以我个人觉得刷题要把基本类型的题会做或者有大概思路。不过现在卷的越来越严重,建议刷题能够早开始就早开始,每天写写题,保持这种感觉和思维。
四、面试过程复盘
以下是我之前面试完自己凭印象整理的大致问题,有面试完忘记复盘了的,所以记录可能不是很全,仅供参考。
(1)腾讯
- 第一次是实习提前批投递了腾讯音乐,连自己的项目都讲不清楚的,基础知识点都没看完,一面凉(2020年04月初面试的,之前发的凉经https://blog.nowcoder.net/n/43bee0d477ab40d08e8226380a494b17)。深感自己太菜,然后开始好好学习,天天向上。
- 实习正式批被捞了再次面试,2020年05月中旬面试的,离第一次面过去了一个月,还是有所进步的,撑到了二面才挂的。
- 秋招,8月上旬面试。
(2)字节
- 第一次,7月下旬面试,面完一面紧接第二面,三面隔了2-3天,三面挂。
三面面试:项目相关、B+树优势、磁盘得顺序加载、volatile、ConcurrentHashMap多线程扩容机制、场景题--数据结构设计(rpush、rpop、lpush、lpop四个操作,百万个数据,要求O(1)时间复杂度)、编程题(给一个树,打印树的最大路径,该路径可以不是由根节点到其叶子节点的完整路径,可以是由一棵子树的某一节点到另一棵树的某一节点)。
- 第二次被捞,8月中旬 三面挂
一二面面试问题:同步、异步、阻塞、非阻塞、select,poll,epoll区别、进程的状态、一个http请求接收处理到数据通过网卡发送,操作系统层面的情况、Unsafe类,讲一下原子类的具体实现、同步的关键字、JVM:一个程序的运行过程;
手撕代码:股票买卖:买卖2次、LFU实现 O(1)时间复杂度、判断回文链表 ;
三面:唠项目,然后出了2道编程题,一个是根据IP地址定位区域、一个是判断用户单位时间内请求次数然后限制访问;
- 第三次被捞,9月上旬 一面通过了
(3)猿辅导
3轮技术面
一面
二面
三面
(4)拼多多-拼越计划
2轮技术面
一面
二面
(5)远景智能
一面
(6)美团
技术面2面+1轮HR面+1轮加面评级面
一面
具体面试内容忘记整理了,问的都是比较基础的问题,面试官在听完回答后,会问一下我有没有思考为什么会是这样?还有点印象的问题是:
- 为什么数据库索引 b+树一般是几层,为什么?
- hashmap优化为什么树化的条件?单链表的长度达到了8这个数值为什么呢?
二面
加面--评级
收到意向书后过了一段时间突然又收到面试通知,据说是加的评级面,聊了很多非技术问题,也没有记录,感觉就靠大家个人发挥吧。
(7)网易有道
2面挂
一面
二面
(8)快手
四面过,已经记不清了,应该是3面技术+1面HR吧
一面
二面
后面的面试没记录
(9)阿里
3轮技术+1轮交叉+1轮HR
一面
忘记记录了,基本是围绕项目聊,然后还聊了一会嵌入式。