写在前面
今天是我来杭州找工作后参加的第一次现场面试,也算是工作以来第一次正式的技术面试,超级超级紧张!两个面试官貌似都是做中间件和数据库编程方向的,问的很多我都不太擅长,两轮下来四个字总结那就是生无可恋。今天凭记忆总结一下,调整心态继续征程吧!
问题整理
一、算法
- 代码实现二叉树的数据结构。
- 若二叉树是XX(画了一个),前序遍历是什么?如何代码实现?(写了个递归)还有什么其他的实现方式?
二、数据库
- 写SQL语句。有一个表三个字段“姓名”、“科目”、“成绩”,写一个查询语句查出至少三科成绩为90分以上的学生姓名。
- 有A和B两个表,join后会有多少种结果,SQL怎么写?
- 数据库三范式是什么?
- ER图。
- 索引。
- 事务是什么?事务的特征是哪些,如何理解?四种事务隔离级别是什么?如何理解?四种隔离级别分别会发生什么情况?在平时应该如何选择?
- 死锁是什么?引发死锁的情况。四个条件分别是什么,如何理解?如何处理死锁?
- 如果发现一条SQL查询语句执行时间很长,应如何排查解决?
- 在业务中价钱字段用什么数据类型?
- 数据库主从复制的原理?为什么用主从复制,解决了什么问题?
- 数据库的锁是怎么实现的。
三、Redis
- 持久化的方式
- 是单线程的吗?
- 在项目中用的是Redis集群吗?
四、Java
- ThreadLocal是什么?什么时候会选择存在ThreadLocal中?为什么?
- 确保线程安全的方法有哪些?
- synchronized加在静态方法上和非静态方法上区别是什么?
- 想要实现下单后30分钟未支付关闭订单,如何实现?(我说了定时任务,面试官说还有其他方式吗?大概是想要问Timer类吧?)
- 什么是原子操作?
- 线程之间如何共享数据?
- CountDownLatch和CyclicBarrier分别是什么?
- synchronized和ReentrantLock的区别?ReentrantLock叫可重入锁,可重入是什么意思?
- java有哪些Collection?
- 什么时候用数组,什么时候用ArrayList?
- 异常处理机制:Throwable、Exception、Error的关系。
五、Spring相关
- IOC是什么?
- Bean的生命周期
- 如果一个jar包过于老旧,maven库上没有,如何在springboot中使用?(大概是这意思,然而我并不知道)
- springboot是什么?为什么用springboot?
六、其他
- 三层架构和mvc架构的区别。
- 当你走在马路上,要去坐公交车,发现要坐的公交车从你旁边经过,你会怎么做?(这是道智力题吗?黑人问号脸?)
七、秒杀场景
- 分布式Session是如何实现的?
- 如何优化?除了分流和加缓存,还有哪些思路?
- 超卖问题
八、职业规划
- 自己的职业规划是什么?
- 平常通过什么方式提升技术能力
九、简历上项目的各种问题
总结
面试官除了问是什么,更多的是想知道我对这些的理解、实现原理和实际应用,也确实暴露出自己很多问题,最后就是一种被问蒙了的状态。坦然接受结果,继续努力吧!
想要了解架构技术知识点的,可以关注我的JAVA架构师社区秋㪊:,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。