面经来源:牛客作者 擎宇要努力努力再努力
自身情况:
1、本科双非,硕士211,均不是计算机相关专业。
2、研究生期间从事的科研项目,材料方向,没有java或者其它编程相关的项目。
3、本科参加比赛较多,电子设计大赛,大学生数学竞赛等,没有程序相关的比赛经历。
4、由于身边的人大多数从事程序员行业,自己其实也很纠结,于是疫情期间(2020年4月份)开始零基础看Java,由于个人原因,5、6月份也没怎么学习,断断续续刷了点题(真后悔5、6月份没好好刷题)。还狠狠地梳理了一遍知识体系
系统知识图
Docker思维图(xmid)
5、实习的话,由于5、6月份没好好准备,水了一个线上实习,一个月,写了个爬虫,就靠这个java相关的项目和一堆无关的比赛和科研项目拼命挣扎
6、秋招投了互联网、银行、运营商、研究所等很多公司,总的来说还可以。
7、不要学我,早点准备!!!我准备得太少了!!!
8、没有系统的学习,学了Java基础,就靠刷面经、刷左神视频、B站视频等,太难了,虽然最后拿了不少offer,但是都是白菜价,太难了!!!大家一定要好好准备
关于算法部分,其实要准备的细节内容非常多,所以我也花了不少心思整理了一份关于算法方面的宝典,这份资料我对算法的认识以及我的学习方法,除了Leetcode以外,大厂喜欢问的核心算法题也进行一道一道的深度解析。
9、国企的话,其实看的因素就太多了,后面我也没怎么参加面试(拿了京东offer后,自己已经很满足了,银行、运营商的面试几乎全拒了!!)
10、好好刷题、刷面经!!!
我特意搜集整理了近3年来一线互联网公司的面试题(技术部分),会发现这些面试题实际问的大同小异,但考察你的内容和技术都是有不同的目的性的,对这一部分的分析,我也有写在答案里(详细见文档)。
11、见好就收,知足常乐。
接下来汇总下我的多家面经吧。(可能不全了,仅供参考学习)后面有时间继续补充……
文末免费打包分享文中内容涉及到:面试题(含答案)+学习笔记+电子书籍+学习视频
面经汇总:
(A)美团
(一)一面:
1、自我介绍
2、项目、实习方面
(1)项目或者实习中最有挑战性的一个
(2)遇到的问题
(3)介绍下webmagic框架
(4)布隆过滤器原理
3、Mysql
(1)三大范式,为什么用范式
(2)事务的四大特性,具体说一下
(3)隔离级别,分别解决什么问题
(4)说一下脏读
4、Java (1)collection集合
(2)ArrayList和linkedList的区别
(3)线程安全的有哪些
(4)synchronized
5、算法题:反转链表
6、JVM (1)知道哪些垃圾回收算法
(2)说一下垃圾回收机制
(3)知道哪些JVM参数(这个不会回答,让我自由发挥的)
7、还有一些暂时想不起来
(二)二面:
1、自我介绍
2、项目有关
3、计算机网络 (1)网络TCP和UDP的区别
(2)TCP保证可靠性, TCP在那一层
(3)分层
(4)HTTP的结构
(5)三次握手、四次挥手,为什么不是两次握手?
4、数据库 (1)数据库优化
(2)索引的分类、 索引优缺点、 聚集索引
(3) 慢查询,截取分析
(4)红黑树
5、Java基础 (1)线程池
(2)volatile
(3)垃圾回收机制
(4)创建线程的方式
6、算法题:匹配括号
(B)京东(提前批)
(一)一面:
1、自我介绍、项目等
(1)自我介绍
(2)如何学习Java、通过哪些资料
(3)项目、实习中遇到的问题(问题解决后有去了解原理吗)
(4)通过实习、项目,有哪些提升
2、Java
(1)线程池的参数 ——》线程池核心线程大小和线程池最大线程数量的区别
(2)集合了解吗 ——》set和list的区别——》set如何验证是否重复——》为什么用equals和hashcode呢?而不是用1个
(3)SpringAop用过吗——》没用过
(4)JVM运行时数据区有哪些结构——》还有吗
(5)JVM垃圾回收机制——》为什么有老年区和新生区
(6)稍等一下……
3、数据库
(1)好的,继续……
(2)事物的四个特性 ——》什么是隔离性
(3)隔离级别有哪些——》分别会有什么问题——》什么是脏读——》什么是幻读
(4)有一个问题忘了,比较底层,不清楚如何答,就说了不会
(二)二面:
1、自我介绍
2、Spring中的AOP是如何实现的,jdk和CGLIB方法的区别
3、数据库hash索引和b+树的区别
4、b树和b+树的区别,b+树的优势
5、垃圾回收器CMS和g1的区别
6、http1.0和1.1的区别
7、mysql联合索引使用A>n and B=m和 A=n and B=m的区别
8、线程池中多线程的处理过程(最大核心是5,最大线程数量10,最大队列数量10);如果满了后,如何进行;核心线程最终会结束吗(一面的时候和面试官讨论过,面试官说核心线程也是会结束的,所以我就按照1面的说的)
9、你知道哪些java锁
10、TCP4次挥手、3次握手
11、为什么是4次挥手,而不是3次 ——》为什么四次挥手等待2MSL
12、SpringBoot核心自动装配原理——》为什么使用EnableAutoConfiguration 注解
13、用过mybatis吗
14、httpclient这个忘了
15、反问环节:问了平台的业务和用到的技术栈
赠送我的刷题题库(1:BAT一线大厂面试真题)
赠送我的刷题题库(2:专题面试题)
(C)京东(校招正式批)
(一)一面:
1、自我介绍
2、多线程的状态
3、创建线程的方式
4、死锁的必要条件
5、String、StringBuffer与StringBuilder之间区别
6、排序算法有哪些
7、GC(Java垃圾回收机制)
8、B和B+树的区别
9、对无向图有了解吗
10、深度优先遍历类似于二叉树的哪个遍历(二叉树的遍历种类)
11、排序算法中不稳定的排序有哪些
12、现有1000个苹果,分别装到10个箱子里,要求可随意拿到任何数目的苹果但不拆箱,是否可行?若行,每个箱子放的苹果数分别是多少?若不行,请说明理由
(1,2,4,8,16,32,64,128,256,489):考虑二进制
13、45 79 56 38 40 84 第一个为基准,快速排序第一次划分结果是?
14、反问:业务方向和技术栈
(二)二面: 1、ArrayList、LinkedList的区别——》LinkedList为什么删除快、查询慢
2、队列和栈有了解吗——》怎么实现
3、优先级队列了解吗——》堆用什么数据结构实现
4、基本类型——》int是多少位——》封装拆箱了解过吗
5、String、StringBuffer、StringBuilder的区别——》线程不安全那能不能用?——》什么场景下使用线程不安全的情况
6、Java内存分配策略(JVM方面)——》创建一个对象,会在哪呢——》垃圾回收器的算法——》你自己具体用的是哪个算法——》具体的回收器(不是原理)——》垃圾回收机制——》每个区都用到的什么算法
7、Java模型解决的问题(没懂啥意思)
8、Violatile了解么?——》什么场景下使用过?
9、==和equlas的区别
10、synchronized了解吗——》和lock的区别——》为啥有synchronized了还用lock——》默认使用的是乐观锁吗?还是说怎么设置——》乐观锁和悲观锁如何切换
11、了解单例模式吗——》怎么设计单例模式——》为什么这样就是单例的——》如何做到受控操作呢?
12、线程池中如何使线程run起来——》线程池的参数——》线程池的执行流程——》跑任务结束后,如何把结果拿出来
13、HashMap了解吗?——》什么场景下使用过——》查询的时间复杂度是多少——》为什么是O(1)——》hash碰撞怎么办——》hashmap使用的哪一种
14、了解SQL注入吗——》原因是啥?如何避免SQL注入?
(三)三面——HR面:
1、自我介绍 2、如何学习Java 3、遇到问题 4、了解面试的什么部门吗? 5、了解业务吗? 6、下载京东健康APP去了解了吗 7、一会儿会给你结果,去官网查就行了
(D)伴鱼
(一)一面:
算法题(没思路5分钟可以换题)
1、按奇偶排序数组II(给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。 对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。)(leetcode 922原题)
一下子没有思路,换题
2、给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 `true` 。如果数组中每个元素都不相同,则返回 `false` 。
面试的时候,先写的双重循环,写完后,主动和面试官说有个更好的思路(Set判断),要不要再写一个,然后面试官说可以,这样二面的时候会给面试官一个好印象。
3、然后说我通过了,问我有啥问题。(就实习、还有移动端、自己学java聊了聊)
4、没过两分钟,通知明天二面。
(二)二面:
1、自我介绍
2、垃圾回收算法——》结合自己的理解说一个算法原理——》垃圾回收机制(过程)
3、JVM的结构有哪些
4、七层网络协议有哪些
5、输入一个链接的一个过程(输入URL之后的流程)
6、说一下四次挥手过程
7、UDP和TCP的区别
8、GET和POST的区别
9、post如何防止重复提交(这个没说上来)
10、Java的三大特性——》解释什么是多态——》重写和重载的区别——》访问权限问题——》再说下重载
11、synchronized和lock的区别(原理)
12、线程池的执行流程
13、类加载机制
14、有一个问题(忘了),没了解过
15、设计模式有哪些
16、Mysql:查询数据
17、如何通过IO实现文件的一个拷贝(这个见到过,给忘了!!!)
18、说一下某个集合的底层结构吧
19、有一个问题,没了解过,忘了
20、一个数组,实现把某个数据放到第一位,其他的保持顺序不变后移,说一下思路
21、文件夹下边有子文件夹……可能有很多子文件的子文件,获取所有的文件名字(有一个方法可以直接获取名字,没想起来,面试官告诉我了)——》我想的是递归,面试官说有好的办法,我没想出来
22、如何用一个可盛3L水的杯子,一个可以盛5L水的杯子,如何获取4L水。
23、遇到问题如何解决?结合自身说一下
24、你说你积累过错误,说一个你积累的错误,以及错误的原因说一下
(三)三面——HR面:
1、对前两轮面试的体验
2、聊硕士期间的研究、实验室情况
3、什么时候开始打算从事互联网行业的
4、家庭情况
5、只找了北京的公司吗
6、预期薪资
7、目前其他公司面试流程
8、可以来实习吗
9、投递伴鱼公司的初衷(忘了啥问题了,我说了下我的初衷)
10、反问
11、HR介绍公司情况
(E)阿里
(一)一面:
1、项目
(1)思路*
(2)遇到的最大的难题,自己做得最好的地方
(3)Mysql用到的语句
(4)实现翻页的原理
(5)自己一个人做的吗
(6)为什么选择互联网行业?跨专业(电子到软件)
2、Java基础
(1)基本类型及长度
(2)ArrayList、LikedList、Vector的区别
(3)ArrayList为什么有这些特点,因为什么造成的呢
(4)线程池如何实现
(5)多线程如何实现的
(6)为什么使用GC(垃圾回收)
3、算法题
(1)如何判断一个单链表是否有环
(2)二分查找的原理
(3)数据结构中你最擅长的是?
(二)二面:
1、自我介绍
2、 HTTP协议、HTTP状态吗
3、TCP三次握手
4、Java 内存管理
5、 Cookie和Session的区别
6、List和Map的源码实现
7、讲一下List的add方法实现和Map的get方法实现
8、线程的生命周期
9、如何创建线程
10、数据库的索引结构
11、描述B+树
12、Java中的锁实现方式
13、项目介绍
14、爬虫如何避免反爬虫
15、算法题:最长公共子序列
(三)三面:
1、回忆代码
2、自我介绍
3、项目介绍
4、项目具体流程和分工
5、你负责的工作.
6、性能要求变高,怎么解决,讲一下思路
7、在最近一年,你在技术上遇到什么难点是什么?或者说挑战过最难的事情
8、除了项目之外,自己参加过什么比赛
9、研究生期间,项目之外自己做过什么技术上的
10、反问
(F)奇安信
1、说一下Collection接口下面的类
2、 ArrayList和LinkedList区别
3、JVM的垃圾回收
4、JVM堆内存默认比例
5、对多线程方面的了解
6、多线程的状态
7、synchronized具体实现原理
8、谈谈自己对Spring Ioc和AOP的理解
9、项目中是怎么使用事务的?spring怎么实现事务的?
10、TCP和UDP区别
11、SpringBoot与SpringMVC的区别
12、 类加载机制
13、 java访问修饰符的作用范围
(G)百度
1、项目介绍
2、为什么选择这个岗位
3、今后几年有什么规划
4、自我介绍
5、Java的基本类型
6、boolean的底层是什么存储?为什么?
7、其他语言呢
8、接口和抽象类的区别
9、为什么没有多继承
10、枚举类和普通类的区别
(H)华为(数通)
(一)一面:
1、自我介绍
2、项目
3、计算机网络问的多
4、Java他说不会
5、算法题:24点游戏(不会写,说了说思路)、字符串反转(不是常规的类型,没写出来,说了说思路)
6、反问
(二)二面:
1、自我介绍
2、项目(SCI论文问的多)
3、计算机网络知识,涉及较多
4、算法题:输入一个日期,判断是今年的第几天
5、反问
(三)主管面:
1、自我介绍
2、项目
3、遇到问题怎么解决等常规问题
4、反问
(四)来了个加面:
1、一个很重要的问题:你说一下你能打动我的地方
2、其它都是HR面常规问题
(I)浪潮
7/7投递提前批——》8/4AI面试——》等待ing——》9/2通知通过AI面试——》9/4上午9:20面试——》大约10分钟
等待的时间太漫长了
好,下边面试过程(浪潮在线面试系统)
1、HR(可能是HR,也可能不是,暂定HR):时间比较紧,咱就不自我介绍了,你意向地点是北京,济南,有倾向吗——》学校在北京,家乡济南,都可,根据组织安排
2、HR:你从事的是Java是吧
3、技术面试官1:我也不懂JAVA,你说个你做过的项目吧——》巴拉巴拉
4、 技术面试官1:我问你点别的吧——》知道哪些排序算法——》快速排序说一下——》说一下时间复杂度
5、技术面试官1:用过数据库是吧,具体操作过吗?——》MyISAM和InnoDB的区别
此时,好巧不巧,信号断了,直接进进不去 ,退出又重新进的(对于这个系统,有过AI面的各位应该深有体会,不多言)
终于又进入面试系统
6、HR:你是等了好长时间才进来的吗?——》说了一下情况,解释了一下
7、HR:没事,你接着说吧
8、技术面试官1:我没啥问的了
9、技术面试官2(全程没咋说话,面无表情,此刻开口):我没啥问题问了
10、HR:您有什么问题要了解吗——》业务,不同部门,后续安排——》HR:后续会有HR和你联系沟通具体的部门和地点。
结束……
不得不说,投一次浪潮做一遍测评,太难受了,从实习到提前批、被从智联上捞起,做了七八次测评了……
不管怎么说,面试之前大家千万要做好准备,无论从简历方面还是刷题,刷面经,刷视频,而我的是这样的:
简历参考《程序员找工作指南》,另外我可以提供18种优秀的简历模板。
关于学习方法,我个人喜欢阅读书籍文档结合视频的方式,对于这些我自己个人也有一些整理。
- 阅读书籍文档:
- Java架构成长笔记
- Redis核心技术笔记(学习总结)
- Spring全家桶学习笔记(SpringBoot+SpringMVC+SpringCloud+源码等)
- 其它
- 看视频学习:
结尾:未来愿景及祝福
我知道,每个人的情况不尽相同,但是未来的路究竟要怎么走,取决于你自己的步伐。每个人都有自己的选择,但我一直持有的一个观念就是:好运永远是留给有准备的人的。
最后,希望未来的我发展顺利!同样,也祝愿你实现自己的人生理想,愿我们都越来越好,共勉!
友情分享:文章码字不容易,可以点击此处来获取就可以了!