写在前面
今天是我来杭州找工作后参加的第一次现场面试, 也算是工作以来第一次正式的技术面试, 超级超级紧张! 两个面试官貌似都是做中间件和数据库编程方向的, 问的很多我都不太擅长, 两轮下来四个字总结那就是生无可恋. 今天凭记忆总结一下, 调整心态继续征程吧!
问题整理
一, 算法
代码实现二叉树的数据结构.
若二叉树是 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 是如何实现的?
如何优化? 除了分流和加缓存, 还有哪些思路?
超卖问题
八, 职业规划
自己的职业规划是什么?
平常通过什么方式提升技术能力
九, 简历上项目的各种问题
总结
面试官除了问是什么, 更多的是想知道我对这些的理解, 实现原理和实际应用, 也确实暴露出自己很多问题, 最后就是一种被问蒙了的状态. 坦然接受结果, 继续努力吧!
来源: https://juejin.im/post/5c7a422ef265da2d84109e20