电话面(凉)
1、自我介绍
- 瞎比比了一些,忘记了。
2、ArrayList和LinkedList的区别
- 这个题还是挺简单的,回答上了。
3、介绍下HashMap的数据结构
- 从jdk1.7 之前 和hashMap的数据结构 和链表的插入方式 死链 谈到 jdk1.8的数据结构 和链表的改进,扩容方式 和触发扩容的条件。
4、为什么使用ConcurrentHashMap?
- 因为前面提了hashmap是线程不安全的容器,如果要使用线程安全的map 推荐使用 concurrentHashMap 然后问了这个问题
- 根据 hashtable的底层用synchronized关键字修饰的方法,和 collections.synchronizedHashMap对比 ConcurrentHashMap的cas锁实现。
5、说下springMVC的数据流向
- 因为没听清 就乱说了一通。
- 用户请求发送至 前端控制器
- 前端控制器接受请求调用处理器映射器
- 处理器映射器 返回具体的处理器对象给前端控制器
- 前端控制器调用处理器适配器
- 处理器适配器经过具体的适配调用具体的处理器
- 处理器执行完成后 返回modelAndview
- 处理器映射器讲 ModelAndview 返回给前端控制器
- 前端控制器将ModelAndview 传给视图解析器
- 视图解析器解析后返回具体view 给前端控制器
- 前端控制器根绝view 进行渲染视图
- 前端控制器 响应用户
6、说下JVM的运行时数据区
- 元空间 程序计数器 堆区 java栈 本地方法栈
7、说下java栈存储了什么
- 栈帧–对应一个一个的方法
- 栈帧分为 局部变量表 方法出口 操作数栈 动态链接
8、说下堆区 存放什么?
- 对象的直接引用,分为新生代和老年代。
9、 说下GC机制
- 昨天刚复习的方法 扯了一大堆 ,发现有一点没扯到。
- 从minor gc 和full gc
10 、 数据库的事务级别
- 这个最高级别的 串行化 记不清了。靠面试官提醒的。
- 可重复读 可读未提交 可读已提交 串行化
11 介绍下spring的核心模块
- 我说了 AOP IOC/DI 一些
12 动态代理
- 前面提到了 aop 实现方式是动态代理 ,然后就问了动态代理
- 从 jdk的proxy 和 cglib 扯起
13 问了下项目 django的 和java的
- 项目没写啥高大上的 然后就问了一点点就不说了。
14 mysql 的数据引擎的区别
- innodb 和myisam 扯 但是我忘记myisam了。
还有一些 忘记了。。。
视频面 ( 小姐姐面试官 也凉)
1、也是自我介绍
- 还是乱bb
2、说下java和python 的区别
- 我使用起来 没啥区别啊???
3、你喜欢那种语言?
- 肯定是java 啊( php 天下第一)
4、了解jvm嘛 说一说
- 扯一大堆 运行时数据区 和类加载机制。
5、full gc 造成的oom 可以避免嘛
- 我不会啊。。。 扯了一些调优的
6、 如果有一个系统不能容纳2000人,但是又一定要容纳2000人。怎么解决( 不能加机器)
- 最开始没听清 说考虑下分布式加机器
- 然后考虑不到了 面试官提示说 可以不是并发,我就说 加一个排队系统。
- 问了大佬 说 用一个mq 请求入队,避免系统崩溃,如果不行就随机丢弃。
7、分布式锁
- 这是啥????
8、又问了hashmap
- 没啥好说的 又扯了一次
9、又问了事务
- 说了下mysql的事务 又说了spring的事务
10、常用的设计模式
- 说了单例模式的详细设计 饿汉式和懒汉式 ctl双重锁机制 和volatile关键字
11 ioc/ aop 的实现原理
- 随便扯 还好
12 有哪些线程池
- 记不清 就说了jdk的
13 使用线程池的好处
- 忘了。。。
记不清了
反问面试官 你觉得 如果在编码过程中 发现需求错了 怎么办?
- 谁提出的找谁,考虑消耗少一点的进行重构代码。
总结
面试问 事务 jvm的比较多,hashmap 和concurrentHashmap的也多。
线程 也多。 在jvm方面比较菜 ,线程池。