2022春招实习面经【美团、阿里、微软、字节、米哈游】

目录

写在前面

一,美团——快驴事业部

1,时间线

2,笔试

3,面试

一面

二面

二,阿里——大淘宝技术

1,时间线

2,笔试

3,面试

一面

二面

三,微软——苏州STCA

1,时间线

2,笔试

3,面试

一面

终面

四,字节——商业化技术

1,时间线

2,笔试

3,面试

一面

二面

三面

hr面

五,米哈游——数据开发

1,时间线

2,笔试

3,面试

六,再说一点吧


写在前面

1,竞赛(比如ACM区域赛之类)、项目(最好是和投递职位有关联,比如投递java最好填和java相关的项目)、学历(越高越好)至少要有一个;

2,越早准备越好,准备越充分越好(建议寒假期间打磨好简历及项目。2月份就可以投递一些公司,外企截止时间比较早,参考亚马逊、微软。3月初最好做足准备开始投递简历,建议先投小厂熟悉流程。最好不要拖到三月中旬,因为流程推进也需要时间)

3,提前批难度较大但也是机会,如果不会影响后面的面试可以尝试,切忌丧失信心!阿里有三个志愿,但是第一志愿挂掉后,其他两个志愿也很难通过,其他面试官可以看到面评。字节有两个志愿,投递较晚的话,流程会慢一些,但整体来看字节的面试推进速度还是极快的

4,刷题,刷题,还是刷题!(力扣Hot100、CodeTop)

5,不要过早躺平,一切皆有可能发生!即使到了hr或者过了hr也不能掉以轻心,互联网的寒冬不只是说说(锁hc、毁意向等等o( ̄┰ ̄*)ゞ);

6,投简历时提前打听好部门是否卡学历,比如只收本科211及以上的。就算过了简历关,也很有可能被hr吊着;

7,面试拼的不仅是技术更是战术,在擅长的领域拖的时间越久,越不容易暴露自己的缺点。项目、竞赛、博客都是为了这一刻而准备;

8,如果后端开发卷不下去,前端也是不错的选择;

9,对于后端开发:Java需求量大,需要掌握的八股文也多,难度也较高,但整体来看不是不可到达的高度。go的八股比Java少,且缺口大,相对而言优质的参考学习资料较少。C/C++不是真正的高手,请慎重选择。python还是只把它当成工具吧,需求量少;

10,有不会的问题不要紧,可以思考一会然后告诉面试官不是很熟悉这部分内容,关键是会的领域能钻多深、思考问题的过程是否合乎逻辑并且具有一定深度。此外如果问到的问题没有思路,可以尝试把话题引到与之相关并且自己熟悉的领域;

Java面试重灾区

  • 基础部分:jvm(类加载、垃圾回收、内存模型等等)、多线程(线程池、多线程交替打印)、常用工具类底层源码实现(如HashMap、ConcurrentHashMap)、synchronize和lock实现和底层原理;
  • 计网:TCP三次握手和四次挥手、http和https、状态码、一次http请求经历的过程、TCP为什么可靠
  • 数据库:事务的ACID特性及实现、隔离级别、常用数据库引擎区别、事务并发可能遇到的问题及解决方案、根据情景设计数据库表、数据库索引实现及原因
  • 操作系统:进程线程协程区别、进程间通信、中断过程
  • 数据结构:常用排序算法时间、空间复杂度、稳定性、常见数据结构的区别及应用场景(如链表和数组)

一,美团——快驴事业部

1,时间线

03.01 简历投递

03.02 笔试邀请

03.05 参加笔试

03.10 一面

03.16 二面

03.22 OC意向一起发(没有hr面)

2,笔试

五道编程题,4算法+1工程。难度中等偏上。具体题目记不太清了,比较灵活,偏场景些;

a了两题,额外偷了0.6,总共应该是2.6题;

3,面试

一面

1,分布式锁在项目中的作用?锁的key?发送端吞吐量?redis分布式锁底层实现机制大概讲一下?

2,spring启动经历的过程?bean生命周期?

3,一次http请求中request和response过程?http请求头部包括哪些信息?http协议中request和response内容?

4,给一段代码,大致意思是String s = "",s循环加上int类型的i(i从1~100000),逐行分析jvm内部发生了什么?(字符串常量、包装类、字符串拼接及优化、垃圾回收)

5,ArrayList扩容机制?

6,编程题:给定有序数组查找指定元素第一个出现的位置,该元素存在,二分查找模板题

小结:

  • 人生中第一场实习面试,很多地方都准备的不充分,jvm基础数据结构等回答的比较浅。面试完就感觉没了,复盘时录音根本都听不下去o( ̄┰ ̄*)ゞ
  • 面试官人很棒,是位很稳重的大叔,声音也很温柔,虽然答得不怎么样,但还是很耐心的讲解,体验很棒!
  • 基础,基础,还是基础!

二面

1,在学校学了哪些课程?聊一聊对中断的理解?从键盘上敲下一个按键开始,到记事本上显示出来敲下的字符,中间经历了哪些步骤?越详细越好

2,堆排序的空间复杂度,时间复杂度,建堆和排序时间复杂度各是多少?自顶向下和自底向上建堆时间复杂度区别?简单推导一下

3,编程题:二分查找模板题,和一面差不多,但是如果找不到的话返回最接近目标元素的左边的值,比如查找7,数组中只有6和8,则返回6

小结:

  • 二面面试官好年轻,有点像我表哥,哈哈哈。
  • 面试过程很温柔,而且超级礼貌!(面试前亲自私聊我调整时间,说是一起面试的小伙伴,我当时还纳闷,跟我一起面试?后来才反应过来是面试官,哈哈哈)虽然前面两个问题答得非常差劲(操作系统中断确实是基础,还是要重点关照下。数据结构又理解的不透彻),但是中途一直都很耐心,虽然会给我设坑,看我反应,中招后还会主动解释刚才是他设计的陷阱(⓿_⓿)。总之面试过程还是很棒的,面试官对于计算机底层知识也非常感兴趣,可以感觉到是一位技术爱好者,在这样一位领导下工作应该会很舒服吧
  • 一面和二面都让我觉得自己到底有多差劲,很庆幸问题发现的比较早,非常感谢两位面试官的指点。最后收到OC真的非常意外,我记得那是淘宝二面寄了的一天晚上,一通电话打来,给......
  • 基础,基础,还是基础!

二,阿里——大淘宝技术

1,时间线

03.03 简历投递

03.03 心理素质测评(时间随意,不是决定性因素,但也要认真对待)、笔试邀请

03.14 参加笔试

03.16 一面

03.22 二面

03.22 流程终止

2,笔试

单选、多选、三道编程题。选择题覆盖计网、数据库、操作系统、Linux等基础知识。算法前两题中等难度;

a了两道,第二题需要用到dp;

3,面试

一面

1,三次握手、四次挥手(没有要求详细介绍参数)

2,http和https区别?端口?http请求中有几种方法?返回的状态码?(问的也比较浅。没想到状态码真的问了)

3,虚拟机内存区域,运行状态

4,多线程间数据共享?

5,垃圾收集算法?分代收集?

6,内存溢出排查?用哪些命令看大的对象?用过相关工具吗?

7,数组和链表区别?循环遍历效率差别?ArrayList扩容机制

8,Java基本数据类型有几种

9,知道几种设计模式(还以为要详细说,就没敢讲太多。。。)

10,wait和sleep区别?

11,synchronize在哪修饰?可以修饰对象吗?可以修饰int类型吗?

12,mysql查询第10w页的第1000条?如何优化?

13,隔离级别种类,MySQL的隔离级别,MySQL几种引擎?区别?

14,redis如何实现分布式缓存?或者说redis数据库如何防止超卖?不同地域如何处理?

15,autowaire和resource注解区别?

16,spring实现事务一般用transectional,一个类中两个方法都使用该注解修饰,并互相调用,事务会生效吗?为什么?

17,编程题:1)判断线索二叉树。2)简单的统计排序,具体记不清楚了(用hashmap+优先队列)

小结:

  • 可以看出问题覆盖的面还是比较广的,但是还好问的不是特别深,尽管如此,很多题目回答的仍然不够具体,为后面的面试埋下了隐患;
  • 面试过程中时间安排的非常紧凑,问题一个接一个,有明显的压迫感。听声音像是一个小哥哥,但丝毫不减威严。

二面

1,博客主要有哪些内容?

2,计算机为什么使用二进制?

3,java中,在文本中写入代码到机器执行,这个过程发生了什么?虚拟机加载class到真正在物理硬件里执行机器码中间的步骤?不同类型的数据在java内存中的存储方式?Java虚拟机如何知道从内存中具体哪个地方加载使用具体的类 或者 说class在虚拟机内部是怎么描述的?(这里面试官提醒的已经十分明显了,但是当时没有太深入的了解虚拟机内部的东西,回答的比较尴尬)

4,ThreadLocal为什么会出现内存泄露?如何避免这种现象?

5,多线程中有几种级别的锁?轻量级锁和重量级锁区别?轻量级锁实现原理?

6,输入网址到返回页面,中间发生了哪些步骤? 

7,项目核心难点?详细的技术方案?当数据量进一步增大的话该如何扩展?备选的消息中间件有哪些?各种中间件的优势?相比于redis,可靠性更高的原理?你觉得消息中间件要怎样设计?核心要关注哪些功能?消息发送到消息中间件后,如何消费消息?(以上问题可以回答不知道,如果还是追问的话,可以给出一个自己觉得有道理的解决方案并且明确这是自己的猜想,并未看过具体的设计。比如消费消息可以考虑在本机中设计循环队列来存入、去取出数据,通过指针移动的方法表示消息已经被消费,分布式场景下则需要考虑rpc调用等问题)

8,项目中遇到过哪些异常或者bug,解决比较久的(这个问题就是考察到底有没有真正做过项目,就算没有也要编一个!不然很可能就认为项目不是你自己做的)?这些过程在博客上有记录吗?

9,个人觉得不错的博客是哪一篇?讲一讲里面的内容?

10,除了简历上的还有其他技术实践吗?

11,有研究过设计模式吗?介绍一下熟悉的设计模式?具体实践中用到哪些?代理模式如何实现?(当时回答成了底层实现,应该回答项目中怎么使用的)

12,平时学习新知识的途径?看过哪些书?比较感兴趣的是哪个方向?自己的长处和短处?

小结:

  • 面试过程中有许多地方可以深入讲的,但是害怕面试官觉得我太强势,就没多说,导致问的问题比较多,给面试官留下的印象就是回答问题不够深入,呜呜呜(找学姐要了面评)
  • 可以明显感觉到有些点挖掘的还是比较深入的,所以不熟悉的东西一定不要乱挖坑;
  • 淘宝二面的面试官应该是面过我的面试官里,最敏锐的一个,对我回答中的每个方面都能很快抓住重点并且继续追问下去,让人有点喘不过气的感觉,但归根结底还是基础太差;
  • 基础,基础,还是基础!

三,微软——苏州STCA

1,时间线

02.25 简历投递

02.26 笔试邀请

02.27 参加笔试

03.14 一面

03.18 终面

04.06 感谢信+流程中止

05.09 hr通知还有hc问来不来(wl轮到了,但是没想到这么多人鸽微软(っ °Д °;)っ)

2,笔试

三道编程题,签到题、dfs、寻找范围内出现的1的个数;

a了两道,第三道暴力写了出来,无法通过最大规格的测试用例;

3,面试

一面

1,问项目,背景、遇到的难点、解决办法等

2,编程题:1)有序双向链表的插入删除。

小结:

  • 微软最看重的就是算法能力,题目做不出来基本就没了。但是一面的题目确实简单(但是细节部分还是要好好斟酌的,而且需要自己设计测试用例),看上去有点放水了,实际上确实放水了,面试官是一个学校的,哈哈哈,运气真不错,整个面试过程也比较轻松
  • 算法题目核心部分基本没问题,但是遍历展示链表内容时,忽略了头节点不存值的问题,找了好长时间。结束后面试官提醒可以多试试debug

终面

1,问项目,主要关注项目整体的逻辑,对细节部分扣的比较深,但没有问如何扩展自己的系统

2,编程题:1)给一个日志文件,记录了ip的访问信息,计算每五分钟内访问次数,需要考虑日期格式等边界问题(字符串处理、日期格式处理真是噩梦,用到好像是格林尼治时间,毫秒部分精确了7位,用Java转换时间戳时会出现时区问题。一开始就被这些繁琐的细节给搞晕了,忘记了工程题目的大忌,应该自顶向下逐步抽象的解决问题,搞一个方法假装它已经实现了某个功能)。

小结:

  • 说实话,二面的面试官真的不像是leader,更像是一个超级有礼貌的朋友,应该是这次春招过程中面试体验最好的一次(并不是指自己的表现好)。打断我时都会先说一句“实在不好意思,我这个地方有点不太理解,你可以再详细讲一下吗?”。一个词形容——受宠若惊。
  • 可惜最后的编程题乱了手脚,要不然希望还是很大的;
  • 微软一面和二面是平行面,过了一面后就可以直接进入leader面了;

四,字节——商业化技术

1,时间线

03.06 简历投递

03.11 一面

03.15 二面

03.21 三面

03.23 hr面+OC

03.24 offer审批完毕,确认任职时间

04.01 意向书(愚人节快乐!真快乐)

有一说一,字节的面试推进过程真的超级快,点名表扬!据说有同学一天就完成了所有技术面试。

2,笔试

参加了学校的内推,没有笔试流程

3,面试

一面

1,项目的吞吐量?如何保证高可用?写redis之前还是之后写入mysql?分布式锁在项目中的使用场景?

2,项目使用maven,引入了很多不同依赖包,引入相同的依赖,该如何选择版本?

3,mybatis查询sql整体流程?

4,配置一些动态sql,通过sql、查数据库、返回结果这个过程?

5,mybatis中$和#区别?

6,spring的ioc和aop?

7,循环依赖怎么办?三级缓存通过提前曝光的形式一定能解决所有循环依赖吗?

8,spring事务传播机制?

9,分布式锁当主节点挂掉,会出现什么情况?

10,redis集群搭建协议?

11,redis使用rdb持久化方式,如果保存快照后宕机,数据不一致该如何恢复?

12,redis集群新增节点会出现什么问题?讲讲一致性hash

13,编程题:1)二分查找模板题。对,很基础的那种(●'◡'●)。

小结:

  • 一面是一个帅气的小哥哥!脾气非常好,问的问题也很有针对性,对框架和redis方面了解的比较深入,但是不知道为什么,面试过程看上去好像比我还要紧张(*/ω\*),感觉有点奇妙。
  • 面试过程是针对简历上提到的东西,挨个提问。过程中有感觉答得不好的地方,面试官还安慰道没事,哈哈哈,信心大增!

二面

1,问项目,对细节进行深入的探讨,项目做了多久?

2,对并发控制比较好的数据结构有哪些?HashMap的底层结构以及扩容机制?处理哈希冲突的其他方法?

3,java的锁了解过哪些?synchronize消耗的是哪些资源?

4,volatile和synchronize区别?

5,线程池的一些参数?如何工作?

6,java内存空间是如何划分的?常见的垃圾回收算法?

7,熟悉哪些排序算法?堆排序原理?平均和最差的时间复杂度?

8,redis常见数据类型和数据结构?

9,redis缓存一致性解决方案?

10,MySQL事务解决什么问题?

11,数据库索引的数据结构?设计索引需要遵循哪些基本原则?

12,编程题:1)判断是否为平衡二叉树,需要自己构建树并验证。

小结:

  • 面试官提到对实习生要求时,第一个提到的居然是人品比较好!第二个才说基础扎实;
  • 问的问题都有所准备,而且没有很刁难,面试过程还是比较顺利的,面试官应该不是专攻java,所以java方面问的不是特别细;

三面

1,问项目,明确指出了项目中不太合理的地方,比如技术选型方面的缺陷,业界常用的做法等。一次请求到完成时延大概是多少?介绍下项目中redis的分布式锁?

2,介绍下对redis的了解?redis的持久化机制?aof持久化机制中文件过大怎么办?文件重写功能有了解过吗?redis如何保证高可用?

3,java线程池机制?executor原理?线程状态的切换?线程池的回收机制?为什么要采用线程池的机制?

4,java实际应用过程中节省gc开销的措施?

5,select * from A where x=1,x为一个索引值,内部执行过程?优化器有了解过吗?有用过MySQL索引吗?索引失效场景?

6,网址中输入url到页面渲染的整个过程?页面渲染完毕后连接不关闭吗?为什么要四次挥手?三次握手中某一次失败会怎么样,所有情况都列举一下?

7,编程题:1)手写一个简单的阻塞队列。2)设计数据库表来实现学生、课程、教室、老师之间的映射关系

小结:

  • 第一次遇到女面试官,有种雷厉风行的感觉,气场很强!我全程都在发抖,太哈人了┗( T﹏T )┛。但是从提问问题的角度来看还是很亲和的,比如在回答数据库索引失效场景时,当时只想起来两种,面试官安慰说能回答两种已经可以了(超级感动,呜呜呜),打断回答时也很有礼貌,仅次于微软二面面试官了;
  • 面试过程很紧张,可能是第一次遇到女面试官的原因,但是面试官人还是很好的,对想不起来的地方也及时进行提示和指引,而且很有礼貌。虽然比较紧张,但问道的题目都有所准备,所以面试过程也没有出现太大的过失;
  • 编程环节太尴尬了。阻塞队列之前也只是听说过,没有具体进行实现,在控制并发和设计阻塞循环范围那里绕了好久,面试官看做不出来就下一题了〒▽〒。数据库表时间长没做,都忘了实体和关系表之间的关系了,直接在实体表中添加关系映射,结果越写越乱,好在面试官耐心的提醒,最后磕磕绊绊的写了出来。整个编程环节持续了42min,太菜了;

hr面

1,博客主要内容?如何吸引这么多关注呢?写博客的动机?一句话概括博客带来的收获?

2,做过最成功的一个项目?在团队中发挥的作用?做过最不满意的一个项目?

3,遇到最大的困难?

4,你的朋友有提到自己的缺点吗?

5,确认下实习信息:毕业时间、最快到岗时间、远程实习最早工作时间

小结:

  • 算下来这是第一次hr面,果然风格不太一样,问题侧重于对人格和沟通能力的考察;
  • hr也是会挂人的,所以还是要好好准备。还有就是在后面的沟通过程中,一直在强调最早到岗时间和是否发放offer有关,搞得很害怕。而且后面因为和hr反复修改到岗时间,也搞得比较尴尬。说实话,导师和学校放人的话巴不得立马飞过去〒▽〒;

五,米哈游——数据开发

1,时间线

03.06 简历投递

03.17 笔试邀请

03.20 参加笔试

03.29 一面

04.02 二面

04.13 bp(类似于hr面了)

04.14 OC

04.21 意向书

2,笔试

和阿里类似,选择+三道编程题;

a了两道,最后一题拿了0.3,一共2.3道;

3,面试

mhy的面试和笔试内容是高压线,不方便透露。主体内容还是和其他面试差不太多的,同样也是非常注重基础,可能考察角度会更灵活些,类似于美团,抛出场景题,针对具体的场景进行分析,并给出自己的解决方案。此外对简历上提到的所有内容必须非常熟悉,比如项目、博客之类的。

至于数据开发,个人没有接触过太多大数据组件相关的知识,面试官也就没有为难,最后还提到不了解问题不大,除了专门开设大数据课程的学校,其他学校也没有重点介绍,对在校生要求不会特别严格,基础扎实更重要。

面试过程不一定会有算法题,要看具体的面试官。

小结:

  • 整体面试感觉非常棒!一面和二面的面试官都非常和蔼,虽然我报的是数据开发(因为后台相关的只有数据开发和云游戏后台研发,游戏后台又是用的C++,而且个人也是比较愿意从事数据开发方面的工作),但是并没有特别刁难;
  • 不要以为一面问过基础,后面就不会再问了;
  • 基础方面没有直接问八股,而是通过场景来引导思考,比较考察思维能力;
  • 在介绍公司时,可以感受到面试官对公司由衷的热爱,可以看出对公司文化的认可——追求极致,能在这样的团队中工作,一定不会觉得一事无成,希望能有机会加入到这样的团队中去,发挥自己的一份光和热!

六,再说一点吧

基础,基础,还是基础!每次面试完都会问面试官最看重实习生哪方面的素质,毫无例外全都提到了基础,其他诸如思维逻辑、解决问题能力等等是仁者见仁了。

1,春招实习过程真的超级幸运,遇到了贴心的内推学长、温柔的面试官、心仪的岗位等等。幸运的同时也让我惶恐,常常会问自己自己的实力是否能配得上这份幸运,但想太多也没有用,还是踏踏实实的走好每一步,不够聪明就用努力来弥补,还年轻,不要害怕失败。

2,有时间多和同学沟通交流面试经验。非常感谢身边同学真诚的意见,在和同学交流中,及时发现了自己的问题,然后拼命复习基础、面试、整理复盘,大概有两个星期左右,两点睡早上七点自然醒,醒了继续复习o( ̄┰ ̄*)ゞ。没办法,找工作和单纯的项目demo区别很大,平时学校的课程重点又比较散,计网、嵌入式、大数据、云计算都是摸一点,浅尝辄止,写不到简历上,稍微问深一点就罚站了,所以一定要对学习和工作间的落差做好心理准备。

3,不要自暴自弃。发现问题然后努力去解决就是了,考虑其他杂七杂八的事情只会徒增烦恼。

4,学历很重要,说真的,可能之前没有太大感觉,但是从今年的春招实习情况来看,学历很重要,即使是华五研究生,本科学历也很重要。本来名额就少,投的简历又多,我是hr我也这么搞。学历不行的话就要靠技术来弥补了,比如ACM牌子、大型比赛奖项、实习经历等。

5,写博客是个好习惯。而且相比于比赛而言,能够沉淀下来的东西也更多。

6,拿到offer不要急着拒绝,比如今年就有公司在三月底毁意向,这时候去哪找实习?你不仁别怪我不义,人不能太老实。

7,人的时间和精力有限,要学会协调自己的工作、学习、娱乐和生活。

8,命要紧,其他都是次要的。

最后,真诚祝愿每一位努力的人都能得到应有的回报。

你可能感兴趣的:(JavaEE开发工程师学习之路,java,经验分享,春招实习)