热乎乎的浙江扁鹊面经(Java)
投了一段时间了,还以为简历被刷了,没想到五一收假后立马来了个面试电话,lz 也没想太多就直接面了,面试官还是挺好的,不懂的还耐心引导和解释部分问题,这点挺好的,面试结果说是综合整体面试情况再决定是否有下一轮面试,多半是婉拒了吧,留下了没技术的泪水.jpg,下面是记录的面经分享给牛油们,希望对大家有所帮助。
Java 集合类
- 介绍下 HashMap 的原理,源码,扩容机制,加载因子等内容
- 介绍下 ConcurrentHashMap 的分段锁
- 解释下哈希碰撞,当两个元素哈希值相等时,它是怎么一个操作原理和过程呢?
Java 多线程
- 了解过线程(Thread)吗?
- 说一下实现线程有哪几种方法?
- 在实际场景中有使用过 Callable 吗?
- 平时一般使用哪种类型的线程池?
- 假设你的 CPU 是 2 核或者是 4 核的,如果采用固定大小的线程池,那你会固定多少个线程?
- 说一下对 synchronized 关键字的了解
- 平时在实际场景中是如何使用这个关键字的?
- 一般是将这个关键字加在方法上还是代码体上?
- 平时在项目中是有没有使用过 synchronized,是如何是用的?
- 说一下对 volatile 关键字的了解
- volatile 关键字会禁止指令重排序吗?
- 平时有使用过 volatile 关键字吗?
- 有了解过 volatile 的底层原理吗?比如说在操作系统中,在内存中的过程
- AQS 了解吗?简单讲一下
JVM
- 说一下你对 JVM 的了解
- 了解 JVM 的内存分配吗?
- 比如 private String a = "abc" 语句,定义了一个字符串常量,它是存储在哪里?
- 说一下堆细分成哪几部分?
- 比如 new String("字符串") 这种方式,常量的值是放到哪一区域?新生代还是老年代?
- 如果是大对象的话是优先放到老年代,对吧?
- 说一下一个对象从 Eden 区到 From Survivor ,再到 To Survivor 区,再到老年代的过程
- 如何判断一个对象死亡?
- 说一下四种引用类型
- 像我们日常当中是使用哪一个引用?
- 日常中使用强引用的时候会导致 gc 无法回收,虚拟机内存从而会抛出一个什么异常或错误?
- Error 和 Exception 的区别?
- 如何判断一个类是无用的类?
数据库
- 说一下你对索引的理解,优缺点等
- 平时有使用过联合索引吗?
- 比如说有 a,b,c,d,e,f,g 这些字段,把 b,c,d 三个字段做一个索引,有没有这样使用过?或者说当我这样去使用的时候,为了使索引生效,我应该怎样去查询?比如当我有 b,c,d 三个字段的值的时候可以生效,如果只有 b,c 或 c,d 等字段的值时可以让联合索引生效吗?
- 如果使用模糊查询,那这个索引还能生效吗?
- 如果是前后都有 % ,它能生效吗?
- 除了 % 能让索引失效,还有哪些能让索引失效?
- 平时在设计数据库表的一些基础字段时是如何设计的?
- 说一下事务的隔离级别
框架
- 有看过 Spring 的 IOC 和 AOP 的源码吗?
- 在日常使用中有没有了解过 xml 配置文件,使用注解之类的?