一、个人情况

本科专业自动化,软开0基础,嵌入式方面做过一点。硕士中部某中等985,专业控制科学与工程,研究方向偏理论。2019年确定找软开,前期想着找cpp方向,但是也没咋准备,断断续续就刷过牛客cpp方向的一些选择题,属于看了就忘那种,没啥用。2019年年底,大概11月左右确定找Java开发这一方向,这个时候才开始Java入门。十分感谢王老板和康熙两位大佬,参考大佬们的找工作经验总结,让我的准备过程更有规划和目的性,事半功倍。

offer情况

过了的公司:
没过的公司:
  • Nvidia四面挂
  • 字节两次三面挂,第三次面到二面了不想面,拒绝了
  • 网易有道二面挂、网易互娱一面挂
  • 百度(09.03笔试,10.20号被约10.24面试,已拒绝)
  • 远景智能(过了一面后,二面要我去现场面,由于那个时候学校还封闭式管理,所以拒绝了)
  • pdd拼越计划二面挂

二、学习时间线

  • 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总讲课我觉得一级棒。
            Acwing:https://www.acwing.com/
  • 2020年06月-07月中旬,完善简历项目
  • 2020年07月下旬-08月上旬,开始投递秋招提前批 + 刷题
  • 2020年08月中旬-09月上旬,笔试+面试,空闲之余就进行笔试面试复盘和刷题
  • 2020年09月上旬,各家意向基本就来了,我的秋招差不多就结束了。

三、个人总结

  1. 投的早很重要,就算没准备好也不需要太在意,我就是边面边学的,在面试者中不断去发现问题;
  2. 每次的笔试面试都要进行复盘,可以凭印象找到自己的薄弱环节,有针对性的去多看看这方面的问题;
  3. 面经一般都写的比较浅,如果面试要想有突出亮点,个人建议在某方面自己多挖深一点,不要仅仅停留在面经层面的答案。针对某些知识点的学习,个人建议不要只背答案,亲自实践一下会好很多。就拿计算机网络来说,网上其实有很多的资料,看了也不一定记得住,但是自己去抓包分析看看,可能会更加理解一些;
  4. .面试的时候有回答不出的问题和正常,但是不是只有会和不会这两种答案,可以回答这个我虽然不太懂,但是在哪本书或者网上看到过相关的,然后想办法把话题引到你懂的方面;
  5. 关于项目,很多人其实都是找的网上的开源项目,都是千篇一律的;个人觉得要么你再这个项目上是否可以考虑包装一下;要么再这个项目某一方面钻研的深一些。
  6. 关于简历,简历上的技术栈,不用贪多,写上自己熟练的即可。你写的每一个字,都会被面试官拿着来问你的,所以不是很懂的建议不要瞎写。
  7. 关于刷题,我在做题这方面比较菜,如果投的早的话,其实笔试会比较少的。拿字节来说,我被捞了3次,目前总共面了8次,但是1次笔试都没做过。面试中的手撕代码是肯定有的,但是都是基本题型。所以我个人觉得刷题要把基本类型的题会做或者有大概思路。不过现在卷的越来越严重,建议刷题能够早开始就早开始,每天写写题,保持这种感觉和思维。

四、面试过程复盘

    以下是我之前面试完自己凭印象整理的大致问题,有面试完忘记复盘了的,所以记录可能不是很全,仅供参考。

(1)腾讯

  • 第一次是实习提前批投递了腾讯音乐,连自己的项目都讲不清楚的,基础知识点都没看完,一面凉(2020年04月初面试的,之前发的凉经https://blog.nowcoder.net/n/43bee0d477ab40d08e8226380a494b17)。深感自己太菜,然后开始好好学习,天天向上。
  • 实习正式批被捞了再次面试,2020年05月中旬面试的,离第一次面过去了一个月,还是有所进步的,撑到了二面才挂的。
    面试问题:数据库索引、B+树页合并和分裂、B+树子树节点数量、事务隔离级别、spring循环依赖问题、ES原理、ES写入写出实现、reentrantlock和synchronized、AQS公平锁和非公平锁实现、TCP四次挥手、HTTPS(加密技术、数字签名、数字证书)、java和cpp多态的区别、c/cpp/java对比(因为我简历上这三个方面的项目都有)、有限内存大文件找重复qq号、Top100、cookie和session相关(不可跨域性)。
  • 秋招,8月上旬面试。
    2轮技术面+ GM/面委 + HR面 :前2面,大多围绕基础和项目展开,除了基础面经上的问题以外,一面还问了一些对分布式系统、中间件的理解;一面有问到场景题,个人觉得考核了一些自身对知识点的理解(这里是在场景题中去更新具体的信息,借助了版本号这样的思想,所以在学习过程中多去思考我觉得很重要);二面主要针对我项目中遇到的长连接的问题进行展开提问; 二面的时候有被问最近看什么书,然后聊了聊负载均衡。后面的俩面就没啥技术性问题了,都是综合的聊一聊(个人觉得我还是比较健谈的,起码我觉得HR面我都能从容面对,HR没挂过,可能HR也不咋挂人吧哈哈哈)。

(2)字节

  • 第一次,7月下旬面试,面完一面紧接第二面,三面隔了2-3天,三面挂
    一二面面试问题:ES分词器、进程/线程区别、DNS域名解析过程(DNS如果host 或者 LDNS都没有配置怎么办)、布隆过滤器、多线程如何避免重复消费、多机器如何避免重复消费、React、前端和后端通过什么协议、CA证书是什么、如何保证数据库和ES的一致性、Redis解锁如何实现、状态码403,502、ping、unicode 和 utf-8。一二面撕得代码比较简单,忘记记录了。
    三面面试:项目相关、B+树优势、磁盘得顺序加载、volatile、ConcurrentHashMap多线程扩容机制、场景题--数据结构设计(rpush、rpop、lpush、lpop四个操作,百万个数据,要求O(1)时间复杂度)、编程题(给一个树,打印树的最大路径,该路径可以不是由根节点到其叶子节点的完整路径,可以是由一棵子树的某一节点到另一棵树的某一节点)。
  • 第二次被捞,8月中旬 三面挂
    一二面面试问题:同步、异步、阻塞、非阻塞、select,poll,epoll区别、进程的状态、一个http请求接收处理到数据通过网卡发送,操作系统层面的情况、Unsafe类,讲一下原子类的具体实现、同步的关键字、JVM:一个程序的运行过程;
    手撕代码:股票买卖:买卖2次、LFU实现 O(1)时间复杂度、判断回文链表 ;
    三面:唠项目,然后出了2道编程题,一个是根据IP地址定位区域、一个是判断用户单位时间内请求次数然后限制访问;
  • 第三次被捞,9月上旬 一面通过了
    面了一面,感觉面试问题挺基础的,就没记录,面完一周多才约二面,因为考虑到这个时候已经拿了一些offer,字节大小周,我应该是不会考虑去的,所以直接联系HR取消了面试。

(3)猿辅导

    3轮技术面

一面

    

二面

    

三面

    

(4)拼多多-拼越计划

    2轮技术面

一面

    

二面

    

(5)远景智能

一面

    

(6)美团

    技术面2面+1轮HR面+1轮加面评级面

一面

    具体面试内容忘记整理了,问的都是比较基础的问题,面试官在听完回答后,会问一下我有没有思考为什么会是这样?还有点印象的问题是:


  •     为什么数据库索引 b+树一般是几层,为什么?
  •     hashmap优化为什么树化的条件?单链表的长度达到了8这个数值为什么呢?

二面

    

加面--评级

    收到意向书后过了一段时间突然又收到面试通知,据说是加的评级面,聊了很多非技术问题,也没有记录,感觉就靠大家个人发挥吧。
    

(7)网易有道

    2面挂

一面

    

二面

    

(8)快手

    四面过,已经记不清了,应该是3面技术+1面HR吧

一面

    

二面

    
后面的面试没记录

(9)阿里

3轮技术+1轮交叉+1轮HR

一面

    忘记记录了,基本是围绕项目聊,然后还聊了一会嵌入式。

二面

    

三面

    

四面