自我介绍
聊项目:
聊了下前端和后端使用了哪些技术栈,重点聊了聊jwt封装用户消息,md5加密(安全性?是否可逆),cookie和session的区别(老八股),浏览器关闭了是否cookie和session里的内容还在?(老八股)。
问到项目中是否使用了多线程,没有答上来,实际上在使用guava缓存的接口中,已经配置了多线程。
项目中遇到的困难?(参考之前写的那篇pojo类使用包装类型),还有哪些困难?(mysql时区配置之类的),面试官不是特别满意(似乎答的太浅了,下次再准备准备)。
是否有过前端开发经验?只了解一些前端框架和常见语法,没有深入了解。
jvm:
1.为什么要使用jvm?我答了两点:1.跨平台 2.方便进行内存管理,减少人为内存管理干预(面试官似乎不满意)
2.jvm逃逸分析?这个没答好,只讲了下基本概念。可参考JVM之逃逸分析 - 知乎 (zhihu.com)
3.jvm如何对内存进行清理?我答了分代gc的相关内容。
4.jvm是否会发生内存泄漏,如何处理。这个也没答上来。可参考jvm内存泄漏_IT乾坤的博客-CSDN博客_jvm内存泄漏
javase
1.java面向对象的特征(老八股)
2.java面向对象和面向接口的联系区别(老八股)
3.聊聊java面向接口,什么是面向接口(老八股),面向接口具体怎么实现(实现类,重写接口中的方法),在什么地方使用过面向接口(具体介绍项目中,例如mybatis等地方),面向接口的优势?(可扩展,解耦)
4.java语言和其他语言的不同(老八股)
5.问了锁的相关内容。什么是乐观锁,悲观锁?(老八股),synchronized是乐观锁还是悲观锁?(我个人觉得都有可能,大部分情况是悲观锁?看具体实现?),mysql里面的行锁和表锁是什么?(悲观锁)。
6.jvm怎么进行内存管理?(对象分代,gc)
数据库
解释一下acid(老八股)
什么是事务(老八股)
事务隔离级别(老八股)
什么是脏读,幻读,不可重复读,如果避免?(老八股)
算法题:剑指26,树的子结构(很早之前做过的题,紧张了没想出来,一直想着dfs+回溯,但是没写出来回溯的逻辑),最后面试官说要用递归。算是中等题里偏难的,思路不好想,想到了也不一定能写对。
反问:如何更加高效自学?建议多阅读计算机专业相关书籍,如操作系统,编译原理等。
总结:大概率凉了。。
贴一下算法题代码