1)问:请作一下自我介绍。答:结合自己教育经历、项目、技能简要介绍,重点突出自己的特点和特长。
2)问:请说说什么是事务?答:我回答时突出事物原子性操作,要么都做,要么撤销回滚都不做。问:详细介绍事务的ACID特性。答:分别介绍原子性、一致性、隔离性和持续性(持久性)四大特性内容。
3)对乐观锁和悲观锁的理解。答:当时对这一部分内容不是很了解,但是大概说出了自己的理解。悲观锁是在并发环境中操作的时候,假设每一次操作都会有并发进行,每次执行都需要加锁解决潜在的多线程并发问题,在执行的时候比较“悲观”,认为操作都会遇到并发问题。相反乐观锁在执行的时候就比较“乐观”,认为操作时不会或很少遇到并发问题,所以只在最后提交操作的时候检查和处理并发问题。问:介绍它们是如何实现的。答:我回答的时候举了数据库乐观锁和悲观锁的例子。悲观锁通过加上表锁、行锁、读锁和写锁等实现,乐观锁通过版本控制(使用时间戳或递增的整数)等手段实现该机制。
4)介绍Java的集合,list、set和map的区别。答:从它们的作用、用法、底层的数据结构、初始化容量和扩容规则、被继承的父类、是否多线程安全等角度去回答。
5)HashMap和HashTable的区别。答:这里和回答集合类的思路是类似的。问:HashMap底层是由什么数据结构实现的?答:使用哈希表实现,用链地址法处理冲突碰撞......问:那么HashMap如何实现具体的底层put操作和get操作,请详细介绍。答:HashMap内部使用Entity对象存储键值对,先说put操作......问:好,那HashMap是线程安全的吗?答:非线程安全的。问:那你如何实现HashMap的线程安全?答:使用Collections集合包装类的静态方法synchronizedHashMap包装,实现hashMap的线程安全......问:该方法实现的HashMap安全线程执行效率如何?答:由于使用synchronize关键字实现同步,在多并发环境执行线程必须持有对象锁等才能执行同步代码,在大量并发时效率不高......问:有没有执行效率更好的办法?答:使用concurrentHashMap实现同步map,效率会更高。问:好,说说看concurrentHashMap的实现机制,它为什么会效率更高?答:concurrentHashMap使用锁分段技术实现同步机制,在并发时使用的锁粒度会更小,可以处理更大量的并发数
6) 已知一棵树,请用编程实现查找二叉树的先序遍历、中序遍历?
7)怎么样对数据库查询进行优化?索引有哪些类型?主要说了索引的优化,包括复合索引以及创建索引、使用索引关键字查询的顺序等该注意的问题。
8)interface和abstract class的区别。从修饰类的关键字、类声明方式、类变量、方法体、继承、实现、功能及用法等方面阐述。
9)JVM的内存结构模型。Java栈、Java堆、本地方法栈、方法区、程序计数器。
10)垃圾回收算法和执行机制。主要有标记-清除、标记-整理、复制算法、分代回收算法等,和串行回收、并行回收等。
11)哪些对象在何时会被回收?如何精确定位具体的对象?不再被引用的对象就会成为垃圾对象,即不在引用链上的对象将被回收,通过引用链可以确定垃圾对象
12)GC ROOT对象有哪些?和引用链的关系怎么理解?围绕静态对象、常量对象、方法区对象等分析。
13)如果是在方法里面创建的本地对象,它会创建在内存结构的哪个地方?如何访问该对象?在Java栈的栈帧里面创建了对象的引用,在堆上创建了对象,栈帧里的引用指向堆中的对象。
14)arrayList的扩容方式?
15)Spring事务的特点?我说了Spring的基本核心内容, 然后说了我们项目中是如何去配合其他框架使用的.
16)HTTP发送请求和接收响应的整个流程;扯了一下客户端和服务端之间的流程
17)403、404、405、500状态分别讲解一下,他们之间有什么区别
18)spring的AOP原理和底层实现(框架技术:扯了一下概念和反射机制)
19)Spring的注解讲一下
20)静态代理和动态代理区别讲一下。
21)tcp和udp的区别;以及三次握手、四次挥手
22)HDFS的工作流程;MapReduce的基本原理?
23)HR面嘛,大家都知道就是聊天,然后她不断对你评估。说一些问题吧
1 自己做过的项目,理论多一点,还是动手多一点
2 自己在大学期间有哪些爱好兴趣
3 有考研的打算吗
4 喜欢去哪个城市工作?想要的薪资待遇多少?
5 你理想中的公司是什么样的?