双非本科跨专业 5 面京东,8600 小时后收到通知,流下喜悦泪水
面经来源:牛客作者 擎宇要努力努力再努力
自身情况:
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、见好就收,知足常乐。
接下来汇总下我的多家面经吧。(可能不全了,仅供参考学习)后面有时间继续补充……
免费打包分享文中内容涉及到:面试题(含答案)+学习笔记+电子书籍+学习视频,添加助理 vx:yunduoa2019,跟随指引获取
面经汇总:
(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+源码等)
其它
看视频学习:
结尾:未来愿景及祝福
我知道,每个人的情况不尽相同,但是未来的路究竟要怎么走,取决于你自己的步伐。每个人都有自己的选择,但我一直持有的一个观念就是:好运永远是留给有准备的人的。
最后,希望未来的我发展顺利!同样,也祝愿你实现自己的人生理想,愿我们都越来越好,共勉!
友情分享:文章码字不容易,希望多多点赞+转发+评论支持一波。
以上文章里写到的所有文档资料,均免费分享,有需要的
欢迎大家扫码来关注公众号博主,获取文章全部资料,此公众号会持续更新技术干货、不定期分享 Java 进阶面试宝典、Java 核心知识、架构书籍电子版
评论