4、由于身边的人大多数从事程序员行业,自己其实也很纠结,于是疫情期间(2020年4月份)开始零基础看Java,由于个人原因,5、6月份也没怎么学习,断断续续刷了点题(真后悔5、6月份没好好刷题)。还狠狠地梳理了一遍知识体系
系统知识图
Docker思维图(xmid)
6、秋招投了互联网、银行、运营商、研究所等很多公司,总的来说还可以。
7、不要学我,早点准备!!!我准备得太少了!!!
8、没有系统的学习,学了Java基础,就靠刷面经、刷左神视频、B站视频等,太难了,虽然最后拿了不少offer,但是都是白菜价,太难了!!!大家一定要好好准备
关于算法部分,其实要准备的细节内容非常多,所以我也花了不少心思整理了一份关于算法方面的宝典,这份资料我对算法的认识以及我的学习方法,除了Leetcode以外,大厂喜欢问的核心算法题也进行一道一道的深度解析。
9、国企的话,其实看的因素就太多了,后面我也没怎么参加面试(拿了京东offer后,自己已经很满足了,银行、运营商的面试几乎全拒了!!)
10、好好刷题、刷面经!!!
我特意搜集整理了近3年来一线互联网公司的面试题(技术部分),会发现这些面试题实际问的大同小异,但考察你的内容和技术都是有不同的目的性的,对这一部分的分析,我也有写在答案里(详细见文档)。
11、见好就收,知足常乐。
(一)一面:
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、还有一些暂时想不起来(二)二面:
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、算法题:匹配括号
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)有一个问题忘了,比较底层,不清楚如何答,就说了不会
(二)二面:
2、Spring中的AOP是如何实现的,jdk和CGLIB方法的区别
3、数据库hash索引和b+树的区别
4、b树和b+树的区别,b+树的优势
5、垃圾回收器CMS和g1的区别
7、mysql联合索引使用A>nandB=m和A=nandB=m的区别
8、线程池中多线程的处理过程(最大核心是5,最大线程数量10,最大队列数量10);如果满了后,如何进行;核心线程最终会结束吗(一面的时候和面试官讨论过,面试官说核心线程也是会结束的,所以我就按照1面的说的)
9、你知道哪些java锁
10、TCP4次挥手、3次握手
11、为什么是4次挥手,而不是3次——》为什么四次挥手等待2MSL
12、SpringBoot核心自动装配原理——》为什么使用EnableAutoConfiguration注解
13、用过mybatis吗
15、反问环节:问了平台的业务和用到的技术栈
赠送我的刷题题库(1:BAT一线大厂面试真题)
赠送我的刷题题库(2:专题面试题)
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、457956384084第一个为基准,快速排序第一次划分结果是?
14、反问:业务方向和技术栈
算法题(没思路5分钟可以换题)1、按奇偶排序数组II(给定一个非负整数数组A,A中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当A[i]为奇数时,i也是奇数;当A[i]为偶数时,i也是偶数。)(leetcode922原题)一下子没有思路,换题2、给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回`true`。如果数组中每个元素都不相同,则返回`false`。面试的时候,先写的双重循环,写完后,主动和面试官说有个更好的思路(Set判断),要不要再写一个,然后面试官说可以,这样二面的时候会给面试官一个好印象。
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、反问
1、说一下Collection接口下面的类
2、ArrayList和LinkedList区别
3、JVM的垃圾回收
4、JVM堆内存默认比例5、对多线程方面的了解
6、多线程的状态
7、synchronized具体实现原理
8、谈谈自己对SpringIoc和AOP的理解
9、项目中是怎么使用事务的?spring怎么实现事务的?
10、TCP和UDP区别11、SpringBoot与SpringMVC的区别
12、类加载机制13、java访问修饰符的作用范围
1、项目介绍2、为什么选择这个岗位3、今后几年有什么规划4、自我介绍5、Java的基本类型6、boolean的底层是什么存储为什么
7、其他语言呢
8、接口和抽象类的区别
9、为什么没有多继承
10、枚举类和普通类的区别
2、项目
3、计算机网络问的多
4、Java他说不会
5、算法题:24点游戏(不会写,说了说思路)、字符串反转(不是常规的类型,没写出来,说了说思路)
6、反问
2、项目(SCI论文问的多)
3、计算机网络知识,涉及较多
4、算法题:输入一个日期,判断是今年的第几天
5、反问
(三)主管面:
3、遇到问题怎么解决等常规问题
4、反问
(四)来了个加面:
1、一个很重要的问题:你说一下你能打动我的地方
2、其它都是HR面常规问题
不管怎么说,面试之前大家千万要做好准备,无论从简历方面还是刷题,刷面经,刷视频,而我的是这样的:
简历参考《程序员找工作指南》,另外我可以提供18种优秀的简历模板。
关于学习方法,我个人喜欢阅读书籍文档结合视频的方式,对于这些我自己个人也有一些整理。
我知道,每个人的情况不尽相同,但是未来的路究竟要怎么走,取决于你自己的步伐。每个人都有自己的选择,但我一直持有的一个观念就是:好运永远是留给有准备的人的。
最后,希望未来的我发展顺利!同样,也祝愿你实现自己的人生理想,愿我们都越来越好,共勉!