技术点面试:
- 开发中Java用的比较多的数据结构有哪些?谈谈你对hashmap的理解,底层的基本实现,hashmap是怎么解决碰撞问题的,是线程安全的吗?hashtab是线程安全的,还有线程安全的map吗?currenthashmap是怎么实现线程安全的?对链表了解吗?ArrayList和LinkedList的区别?list如何去重?什么情况下需要重写hashcode?
- 了解异常吗?运行时异常不处理会怎么样?如何处理?
- 对JVM熟悉吗,说一下JVM内存模型,简单说说类加载过程,里面执行的哪些操作?知道垃圾回收机制吗?内存溢出怎么解决,试过tomcat调优吗?GC发生的具体场景?新生代和老年代的比例?如何线上排查JVM的相关问题?
- 对网络协议熟悉吗?http和https的区别知道吗,tcp和udp的区别,三次握手和四次挥手?
- 开发中用了哪些数据库?MySQL存储引擎有哪些?有什么区别,悲观锁和乐观锁的区别,行级锁和表级锁的使用场景,使用过索引吗,常用的索引类型有哪些?数据库垂直拆分和水平拆分有了解过吗?
- 看过spring、springmvc和mybatis的源码吗,了解他们的工作原理吗?spring的AOP和IOC是怎么实现的,实际应用在哪里?mybatis如何分页,如何设置缓存,映射文件中常用的标签?springmvc的常用组件是哪些?解释一下springmvc的处理流程,dispatchservlet的作用是什么?
- 使用过springboot吗?集成过哪些框架?怎么集成的?使用过springcloud吗?如何进行服务的注册发现?服务之间的调用怎么进行?
- redis了解多少,说一下redis中基础的存储类型,事务和使用场景,使用缓存的过程中遇到过什么问题吗?如何保证缓冲区和数据库之间的强一致性?redis的并发竞争问题如何解决?Memcache与Redis的区别都有哪些?redis持久化的几种方式?
- 使用过zookeeper吗?zookeeper有哪些作用?
- 熟悉IO吗?和NIO有什么区别?阻塞和非阻塞的区别?在实际生产中用过IO吗?
- 分布式集群的实现的原理?如何实现分布式session的一致性?分布式事务和分布式锁?分布式系统如何实现负载均衡?如何确定访问的资源在哪个服务器上?
- 线程的wait和sleep方法有什么不同?使用过多线程吗?多线程有哪些实现方式?使用过线程池吗?线程池的构造方法的五个参数的具体意义?单机上线程池如过正在处理服务突然断电怎么办?使用无界队列会出现什么问题?写一段死锁代码?如何解决死锁问题?
- 接口如何处理重复请求?前后端分离如何预防接口被恶意攻击?
- 如何保证共享变量修改时的原子性?synchronize的实现原理?实现一个高性能缓存,支持并发读取和单一写入,如何保证数据完整性?
- 排序算法的实现?快排,选择排序,插入排序?广度优先搜索?
- 你有处理过高并发吗?如何保证高并发下数据的安全?
- 你是怎么使用quartz的?使用场景?配置了哪些属性?shiro的了解有多少?配置过realm吗?
- 使用过Linux吗?常用的文件操作有哪些?如何查看网络端口状态和内存使用情况?
- 了解过docker吗?docker的常用指令?会编写docker file吗?
- 对中间件的了解有多少?使用过哪些中间件?了解过他们的实现原理吗?
- 使用过Nginx吗?如何实现反向代理?具体的配置是哪些?
项目经验面试:
- 项目是否为商业项目?有多少投入?具体的业务是?
- 有多少人参与了项目开发?开发人员占了多少比例?如何进行任务的分配?
- 项目开发了多长时间?项目总的代码量有多少?你的代码量有多少?
- 项目的开发流程以及架构?技术选型是哪些?
- 你在项目中承担了怎样的职责?是否经常开会或加班?项目完成后有哪些收获或是经验教训?
- 项目中最困难的部分是什么?如何解决团队开发时遇到的各种冲突?
算法面试:
- 排序算法,动态规划,贪心算法,选举算法
- 矩阵,链表各类变换操作
- 二叉树,红黑树,B树,B+树
不定时更新。。。