2019-2020年

tech2024-07-09  66

                           2019-2020年_Java高级开发/Java架构师_超凡的面试心经(一)                                                                                                                                                                                                                                                                                                        作者:田超凡

版权所有,转载请注明原作者,仿冒侵权必究法律责任

 

1 概述

一线大型互联网公司普遍采用1+1+3模式,主要包括1次HR面+1次技术笔试+3次技术面试(是否有第三面看运气,基本技术面试第一面是考察是否符合应聘岗位入职基本要求和基本功,第二面主要是根据面试情况来考虑定级和薪资范围,除非是前面两轮面试都表现特别好,可能会有第三面加试,如果你是幸运的,一定要珍惜第三面,第三面相当于给你一个个人展示和引荐的机会,争取第三面拿出绝手活,让面试官眼前一亮,可能会给你一个更好的定位和更高的评价,薪资福利待遇自然也会有显著提升了,除非运气好或者第二轮表现的非常好,面试官还没把你技术功底和潜力了解透,否则一般不会有第三面,总而言之如果哟普第三面一定要珍惜,说明你被技术面试官盯上了。还有一部分企业会用第三面作为机试实践考核,说白了就是远程写代码)

中型互联网公司普遍都是1+1+2模式,1次HR面+1次笔试+2次技术面

小型互联网公司基本都是1+1模式,1次笔试+1次面试(HR面和技术面一起,技术面占核心面试部分,HR面简单了解下你的三观是否端正即可)

 

2 HR一面:电话面试30分钟

关键字:家常便饭

考察重心:基本人格特征,工作履历,职业规划,未来发展

1.自我介绍一下,包括工作情况,重点介绍项目经验

2.你对大公司和小公司怎么看

3.最近很多996 ICU的说法引起恐慌,你是怎么看待996的?你平常什么工作模式?

4.你的学历是大专在读?也就是还没拿到毕业证?什么专业,什么时候毕业,学信网可查吗?

5.你这个年龄有3年工作经验?也就是你15岁左右开始学习编程的吗?讲一下你的心路历程

6.简单说下编程对你的重要性?你是工作编程型还是荷尔蒙编程型?

7.介绍下你熟练和了解的技术点,对于熟练的技术点说下你用到项目哪些地方?对于了解的技术点你了解到什么程度?

8.看你简历上技术点很多,你面试Java开发,但是我看你写的还有很多其他的,包括Web前端,数据库,C#,Python,你是如何短时间学习海量技术的?让你给他们打分,比重总和是10分,你怎么分?

9.你说下你工作过程中的心得体会?你觉得你的技术是什么等级,初中高?为什么?

10.你有什么特长?有什么不足之处?你怎么看待你的长处和短处?

11.说下你中短期职业规划

 

3技术一面:电话1小时

关键字:计算机原理,操作系统基础,软件开发基础,JavaSE基础,JDBC,数据库基础,JavaWeb开发基础

考察重心:软件开发基本功,Java基础

1.说下你做的项目有哪些?重点介绍一个你觉得最亮点的项目?说下你做的哪些模块?不要说很多业务我不关心,直接给我说分别用的技术点?

2.JVM原理和操作系统基础

说下内存和cpu的区别

(1)说下ClassLoader加载类的机制?

(2)什么是双亲委派?怎么实现双亲委派?你觉得双亲委派特点是什么?

(3)说下JVM内存结构

(4)说下GC垃圾回收算法和垃圾回收器,不少于3个,重点介绍某1个

(5)堆区存的是对象真实内存地址还是对象指针?

(6)说下对象的结构,对象在JVM中完整创建流程?

(7)JVM堆区内存分配策略有哪些?说下栈上分配和内存逃逸的区别?说下永久代和方法区的区别

(8)说下JVM线程独占区有哪几块组成?分别存放什么东西?

(9)说下MinorGC,MajorGC,FGC,YGC分别表示什么意思?

(10)说下新生代的复制算法实现过程

(11)新生代晋升到老年代的4种情况是否了解?分别介绍一下

(12)介绍下老年代标记清除算法和标记整理算法区别?

(13)说下CMS和G1垃圾回收器的区别和优缺点?

(14)说下栈区的组成结构?

(15)内存碎片过多会出现什么问题?如何减少老年代内存碎片?

(16)说下内存泄露,内存溢出,死锁,CPU 100%问题如何定位?

(17)说下你用过的JVM性能调优参数?堆区大小分配越大一定越好吗?为什么?

(18)说下linux中的JVM相关命令jstat jstack jmap分别做什么的?

(19)如何打印GC日志?打印GC日志如何实现?

(20)说下分代算法是怎么分代的?

(21)说下JVM空间分配担保和动态对象年龄是如何实现的?用来解决什么问题?

(22)详细说下CMS并行标记清除执行原理?CMS执行的时候每次需要执行几次对象标记?

(23)二进制,八进制,十进制,十六进制转换公式

 

2.你对Linux内核熟悉吗?

3.你说下内核态和用户态的区别?

4.零拷贝如何实现的?说下常用的操作命令

5.final关键字的作用和运用场景?

6.String为什么是final?

7.ArrayList,LinkedList,Vector集合的区别?

8.HashMap和HashTable区别?

9.ConcurrentHashMap和LinkedHashMap区别?

10.HashSet和TreeSet区别?

11.说下对线性表,链表,二叉树,红黑树的理解

12.知道线性探测吗?介绍下你对线性探测法的理解?

13.String,StringBuffer和StringBuilder区别?

14.悲观锁和乐观锁什么意思,如何实现?

15.volatile和synchronized的区别是什么?

16.什么是线程锁,什么是分布式锁?线程锁和分布式锁区别?如何实现线程锁和分布式锁?

17.说下File IO常用输入流和输出流API

18.说下BIO NIO AIO模型的区别?

19.说下你对同步和异步的理解?

20.说下如何实现线程?线程的生命周期?

21.你用过线程池吗?说下你对线程池的理解?

22.说下CAS无锁机制的作用是什么?如何实现CAS无锁?

23.说下冒泡排序和希尔排序的特点?时间复杂度和空间复杂度是多少?

24.说下ThreadLocal本地线程实现机制?

25.你们项目做的最大并发量达到多少KPS?

26.override和overload的区别是什么?

27.构造函数和静态代码块执行顺序?谁先谁后?为什么?

28.说下你对数组的理解,数组和List有什么区别?

29.字符串如何实现回文?比如输入abcde,返回edcba

30.说下Error和Exception的区别?什么是编译异常什么是运行异常?声明异常的方法必须抛出异常吗?抛出异常的方法必须声明异常吗?继承关系下声明异常的原则是什么?

31.说下里氏替换原则和多态

32.为什么我们提倡面向接口编程?结合1.8以上版本说下接口和抽象类的区别

33.lambda表达式匿名函数是什么意思?lambda实现循环比普通循环执行效率高吗?

34.说下SQL语言组成部分?

35.说下DBS和DBMS区别?

36.说下什么是数据库模式对象?

37.说下事务的理解?事务的acid特性?常用隔离等级有哪些?

38.说下数据库查询卡慢的时候,如何对SQL做优化的?

39.InnoDB和MyISAM引擎区别?为什么默认是InnoDB?

40.mysql索引类型有哪些?

41.mysql如何做集群?如何分表分库?

42.说下MySQL常用的内置计算函数?

43.说下JDBC执行流程?

44.说下JSP和HTML区别?JSP内置对象有哪些?

45.说下常用的EL表达式和JSTL标签

46.说下数据库设计的步骤?

47.你对数据库三大范式的理解是怎样的?

48.存储过程和触发器用过吗?

49.说下PL/SQL常用选择结构和异常类型

50.说下你对传统JavaWeb项目的理解

最新回复(0)