2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)

前言:
之前发表了一篇实习复习的内容:

史上最全!20/21届春招/秋招 实习/校招 JAVA面试全攻略!复习回顾这一篇就够了!

在这篇文章详细说了该如何去复习,也答应各位把面经整理一下,但是因为入职的事情耽搁了,现在整理出来回馈给大家!

PS:楼主只收到网易、快手、华为三家offer,也不是所谓的offer收割机。只是提供一些个人经验,这个平台帮了我很多,前人栽树后人乘凉,共勉!

文章目录

      • 美团
        • 一面
      • 快手(已offer)
        • 一面
        • 二面
        • HR面
      • 阿里
        • 一面
      • 腾讯
        • 一面
      • 网易(已offer)
        • 一面
        • 二面
        • HR面
      • 京东
        • 一面
      • 华为(已offer)
        • 一面
        • 二面
      • 字节跳动
        • 一面

美团

一面

0.自我介绍
1.问项目(项目详细介绍、用到什么技术、有什么优化)
2.线程池?创建线程池需要哪些参数?是否会存储内存溢出?
3.常用的数据结构?
4.栈跟队列的区别?
5.编程题:使用两个栈实现队列的功能
6.mysql的b树和b+树?
7.聚簇索引和非聚簇索引?
8.索引的优化,索引的失效?为什么不是索引建的越多越好?
9.线程安全的问题?(这个问题我并没有听懂)
10.创建线程需要创建哪些资源?线程有哪些状态?
11.线程的start方法和run方法?
12.线程之间通信有哪些方法?进程之间通信有哪些方法?
13.线程和进程之间的区别?
14.tcp和udp的之间的区别?
15.drop、truncate、delete之间的区别?
16.javaGC有哪些算法?常见的垃圾回收器?
17.java内存区域?
18.什么时候会进行young GC?什么时候会进行full GC?
19.反问环节

PS:第一次面试,有点紧张,知识差不多都会,但是答的思路并不通畅。但是一个月之后收到感谢信。。。


快手(已offer)

一面

0.自我介绍
1.ApplicationContext这个接口?有什么用?继承自什么接口?
2.springboot的启动流程?
3.三道代码题:

  • 单例模式,要求线程安全、懒加载(我写的DLC的模式,基于这个又问了一下volatile和synchronized的原理和为什么在这里用)
  • 把一个长度为 n 的数组分成 k 段,让每段和的最大值最小。(这道题思路跑偏了,面试官说复杂度太高)
  • 每间隔m个元素反转一次链表(1-2-3-4-5-6,间隔2的反转:2-1-4-3-6-5)

PS:一面就三道编程题把我弄得有点蒙,面试小哥说时间不够了,我给你安排二面吧…

二面

0.自我介绍
1.做项目遇到的问题?
2.单线程改为多线程会产生什么问题?(因为我项目中使用了多线程优化和线程池)
3.线程池的参数?
4.线程池的内存溢出是什么情况?
5.阻塞队列介绍一下?加锁的情况?
6.写过关于信号量的东西吗?(面试官对我把阻塞队列中底层源码lock.newCondition作为锁表示怀疑,所以问出来了这个问题)
7.线程池的启动流程?
8.线程池的过期时间这个参数,指的是什么?线程池的过期时间到了之后,线程是如何被操作的?
9.OSI七层模型?
10.TCP和UDP的区别?
11.三次握手协议?
12.hashmap的原理?hashcode和equals的关系?hashcode相等,equals是否相等?
13.hashmap为什么是线程不安全的?
14.hashmap的尾部遍历?(没答上来)
15.数据库的优化过程?
16.explain的查看哪些字段?(答的不完整)
17.数据库为什么使用B+树而不是使用B树?
18.索引存储的位置?磁盘还是什么?
19.B+树的叶子有什么特点?为什么B+树适合范围查询?
20.什么是回表操作?如何避免索引的回表?
21.什么情况的会用到锁?介绍一下java中的锁?
22.synchronized的锁的底层实现?
23.锁升级理论?什么时候会转化为重量级锁?
24.算法题:给定数组,一个给定值,寻找数组中两个数字之和为指定值。(使用了暴力解法,面试问了一下优化方式,没答上了)
25.反问环节

PS:这个面试明显比上一个气场要强,问的问题比上一个面试官深,虽然基本上都答上了,但是面试官会对一些平时不太注意的细节加以询问。整体的流程比较严肃。

HR面

正在腾讯的笔试,打来了电话,说询问一下情况。。。

1.实习经历
2.实习项目
3.项目的解决思路
4.在实习公司如何学习
5.对应聘部门的了解
6.反问


阿里

一面

1.自我介绍
2.在学校的GPA,在学校有没有参加ACM和数学建模
3.你个人的博客地址(我写了自己经常写博客)
4.阅读过的技术书籍,遇到问题怎么去查找
5.hashmap的基本原理
6.处理hash冲突的方式
7.jdk1.8使用treemap来处理哈希冲突,你是怎么理解的?
8.arraylist和linkedlist的区别
9.增加删除线性表的第一个元素,使用哪种数据结构
10.JVM的内存结构
11.新生代和老年代的GC算法
12.内存泄露是什么?什么情况出现?
13.HTTP常见状态码
14.HTTP和HTTPS的区别
15.mysql提供哪几种索引
16.单库数据库满足不了性能,如何处理
17.分库分表的水平和垂直切分
18.Redis的分布式锁
19.什么是公平锁?什么是非公平锁?
20.常见的设计模式?
21.工厂模式使用场景
22.Linux命令:awk命名(分割符),查找指定列;pdm集群找出文件
23.线程池的实现思路
24.反问:部门的主要内容、HC多不多、自己的不足

总结:基本上都答出来,Linux命令两个都不知道,没有考察编程,因为面试官说我笔试不是很好,所以没考察,后面的会重点考察。

PS:然后就没然后,今年阿里疯狂刷KPI,我投的属于比较晚的,截止到4.30号,还是没有消息,找内推人得到的回复是,面试官比较忙,然后我就主动结束了内推流程了。。。


腾讯

一面

1.怼项目
2.疯狂怼项目
3.归并排序
4.TCP为什么需要三次握手而不是二次握手
5.反问:部门是什么,二面什么时候,部门的业务和语言
PS:这是PCG部门,部门的语言是go、python、java,我猜测这个面试官的主要方向不是java,没有问我java方面的,问了30分钟的项目,最后的结论是:项目太少、语言掌握太少。

一段时间之后就收到感谢信了(估计是语言不符)


网易(已offer)

一面

0.自我介绍
1.线程和进程的区别?
2.进程什么时候会从用户态进入内核态?为什么需要引入用户态和内核态?
3.什么是守护进程
4.什么是孤儿进程?什么是僵尸进程?
5.进程的通信方式?本机进程与进程使用socket的场景?
6.TCP和UDP的区别?
7.OSI七层协议?五层协议?
8.路由器和交换机分别位于哪层协议?
9.TCP保证可靠的机制?
10.TCP如何确认每次数据的正确性?
11.三次握手和四次回收?
12.TCP建立连接和断开连接的状态(time_wait和close_wait)
13.time_wait和close_wait大量存在的原因和处理办法
14.time_wait 的存在时间为2msl,为什么?
15.数据库索引?
16.数据库索引优缺点?索引回表(结合着一个场景题)
17.什么时候数据库索引失效?
18.队列和栈的区别?平衡二叉树?
19.AVL树、B树、红黑树的区别?
20.java面向对象特性?继承、封装、多态?
21.什么是反射?使用场景?
22.jvm的内存区间分布?堆和栈分别存储的内容?
23.对象的方法参数存储的位置?
24.gc回收、分代垃圾回收算法、年老代和年轻代回收?
25.hashmap在jdk1.8的变化?
26.项目介绍
27.项目自己做的优化
28.一致性hash算法、负载均衡
29.反问:部门情况、语言、表现如何、多久可以接到通知

PS:网易的招聘流程给我的感觉很不错,通知也很及时,问的也很基础,面试感觉比较好。

二面

0.自我介绍
1.项目相关?邮件存储的方式(我的项目是邮件项目)
2.技术上的优化方案?
3.算法题:01二维数组,上下左右视为连续,求二维数组中连续的最大1的个数。
4.java中支持并发的容器
5.hashmap的底层实现?get的操作过程?
6.从网页上写下一个URL,都有什么过程?
7.https的非对称加密?加密过程?
8.反问环节

PS:面试小哥全称带笑,算法题也是引导着很快就做出来了。

HR面

0.自我介绍
1.学校担任过什么职位
2.对网易的看法
3.平时玩游戏吗?玩什么游戏?
4.平时如何学习的?通过什么方式去解决问题?
5.说一下你觉得你处理的最好的事情?
6.反问

PS:网易这个hr给我的感觉就比较亲切,开始的时候还自我介绍了一下,给我一种十分尊重的感觉,然后交流的时候也十分轻松,就感觉自己已经过了。。。


京东

一面

0.自我介绍
1.平时怎么学?看过什么书?
2.项目相关?几个人做的?如何配合工作?功能模块遇到的问题?如何优化?
3.实习时间?有什么感受?
4.上一个实习加班吗?
5.hashmap如何遍历?
6.hashcode和equals方法区别和作用?
7.new一个对象,java中有什么操作?
8.类加载的过程?
9.泛型?泛型的两个关键字介绍一下?(extends、super)
10.Spring的AOP,底层的两种实现?(两种动态代理模式)
11.sql语句,班级表,查出重名的人?
12.sql语句优化(慢查询、explain)
13.网关接口,每个接口被调用的次数(这个没答出来,说了一下幂等性的唯一id的那种模式,面试官反馈好像可以)
14.自己的平时爱好?
15.自己的缺点?
16.你有什么要问的吗?

总结:感觉面试的比较仓促,然后就没有了,也没有感谢信。。。


华为(已offer)

一面

0.自我介绍
1.算法题:整数数组,打印一个和最大的连续子数组,和相同的情况下打印最长的情况。
2.常见排序方法?
3.快速排序和冒泡排序的区别?是否稳定、时空复杂度?
4.递归方法的优缺点?
5.研究生实习时长?
6.实习期间的主要收获是什么?
7.反问环节?

PS:一面比较简单。

二面

0.自我介绍
1.学校什么时候开学?
2.什么时候能来实习?
3.导师对实习的态度?
4.学校的位置?
5.对微服务架构的理解?
6.实习的目的?
7.会选择留在华为吗?
8.使用过什么数据库?
9.有女朋友吗?(emmmm)

PS:这个大佬是2004年硕士毕业进华为的(我也不知道为什么二面会安排这种资历的面试我。。。),这个大佬刚进华为的时候被派到我学校附近工作,经常去我学校吃饭打篮球,就对我很亲切,全称聊的很开心,当天晚上就给offer了。


字节跳动

一面

0.自我介绍
1.抽象类和接口的区别?分别用于在什么场景?
2.String 、Stringbuffer、Stringbuilder
3.重载和重写的区别?
4.arraylist和linkedlist的区别?
5.为什么hashmap不是线程安全的?
6.线程的状态?
7.wait和sleep的区别?
8.synchronized的类锁和对象锁?
9.线程池在CPU密集型和IO密集型?
10.youngGC和fullGC的触发条件?
11.young区分为哪些区,哪个区满了会触发youngGC?
12.垃圾回收器?G1和CMS的了解?
13.java内存模型?
14.线程的同步和通信?
15.volatile关键字?底层的机制?
16.float和double的浮点的精度运算?
17.数据库场景题:

  • 建立联合索引(a,b,c),然后在where条件是:a=xxx and b>xxx and c=xxx; 这个时候联合索引是否被用到,(索引会在>或者<停止。)
  • 索引不变,where条件是:c=xxx and b>xxx and a=xxx;索引是否被用到(这个where条件跟第一个是一致的,数据库会进行优化。)
  • 表并不存在索引,查询条件是where a=xxx order by b;这个时候应该如何建立索引?(建立一个ab的联合索引,会先过滤a索引,在排序b索引)

18.乐观锁和悲观锁?
19.spring的初始化的流程?
20.Redis的数据结构?
21.Redis的分布式锁?
22.Redis的哨兵机制?
23.消息中间件使用过吗?
24.编程题:两个单向链表进行加和,例如1->2->3->4,另一个是3->4,返回一个链表1->2->6->8;不可以遍历转出数字直接加。。。

PS:在数据库场景题上答的不好,其他的差不多答上,最后因为部门名额没了,收到感谢信了


【Java 面试那点事】

这里致力于分享 Java 面试路上的各种知识,无论是技术还是经验,你需要的这里都有!

这里可以让你【快速了解 Java 相关知识】,并且【短时间在面试方面有跨越式提升】

面试路上,你不孤单!
在这里插入图片描述

你可能感兴趣的:(Java面试知识汇总,Java面试那点事,面经)