前言
在被挂了一次简历后,获得了一次面试机会。记录下面试的过程。挺多问题都没想起来。面试时,应为比较赶,没来得上录音。但是我记忆力还是不错的,大部分的问题都能记住。
一面:
一面,问的都是理论基础,但是会问的比较深入和会抓住一些细节上问,在线程池源码这部分被问住了,这部分掌握的不是很好
-
1、面向对象的特性(抽象、封装、继承、多态)
-
2、方法重载与重写的区别
-
3、JVM内存区域与JMM有什么区别
-
4、常用的GC算法
-
5、Java中有什么锁、如何排查死锁
-
6、自旋锁的原理
-
7、CAS 如何解决ABA问题
-
8、线程池的类型,executes工具类创建线程池为什么会导致OOM问题
-
9、线程池的偏移量 COUNT_BITS
-
10、获取线程池的线程运行转态
-
11、原子类
-
12、Redis如何获取100个Key 为String类型的数据(rua脚本)
-
13、Redis事务
-
14、(讨论)你认为什么是事务,你还认为Redis有事务吗?
-
15、 Docker 常用命令
-
16、Docker 上传JDK1.8 镜像流程
-
17、Linux 常用命令,举例如何找到一个线程。
(因为简历上写了Python、这里问到了些Python相关的基础)
-
18、Python的数据类型
-
19、Python 爬虫如何解析数据(大概是问这个,这里没有get到面试官问的点)
-
20、正则表达式,如何写一个验证邮箱的正则表达式
二面:
二面,问的比较偏实战,但需要讲出深度。很多部分都答的很粗糙了。
- 聊一些项目。。。
- Integer 的最大值
- 未什么Integer的最大值是21亿
- 原子类AutomaticInteger,具体使用
- Java8新特性(这里答了:lambda表达式、函数式接口、Stream流、HashMap、ConcurrentHashMap)
- Stream流 解决,以逗号分隔的字符数组加入到list中
- HashMap的遍历方式
- SpringMVC的基本流程
- SpringMVC的实现原理
- SpringMVC Controller 如何接收多个参数参数
- SpringMVC 拦截器 filter,和AOP有什么异同
- Spring AOP 的实现方式
- Spring日志,日志的级别
- 日志 如何开启sql语句
- debug 打断点 ,如何设置条件断点(没答上来...)
- Linux 命令 参数(这里被问到了,因为前面没答好,紧张忘了。。。很糟糕)
- 如何查看tomcat运行端口
- tomcat日志
- Mysql索引
- Mysql 性能排查,sql优化
- explain都有什么字段
- Mysql 如何配置主从数据库
总结
这次的面试,发现了还有好多的细节没有掌握到位,比如在线程池这块,还需深入的去阅读底层的源码实现,不应只懂个大概。SpringMVC这块掌握的也不是很好,一面答的还是听良好的,二面被被问的不会了,越问越慌,后面细想,其实问的都很简单,就是自己没答上来,其实挺不应该的。总之,继续加油吧。