写在前面

今天是我来杭州找工作后参加的第一次现场面试,也算是工作以来第一次正式的技术面试,超级超级紧张!两个面试官貌似都是做中间件和数据库编程方向的,问的很多我都不太擅长,两轮下来四个字总结那就是生无可恋。今天凭记忆总结一下,调整心态继续征程吧!

问题整理

一、算法

  1. 代码实现二叉树的数据结构。

  2. 若二叉树是XX(画了一个),前序遍历是什么?如何代码实现?(写了个递归)还有什么其他的实现方式?

二、数据库

  1. 写SQL语句。有一个表三个字段“姓名”、“科目”、“成绩”,写一个查询语句查出至少三科成绩为90分以上的学生姓名。

  2. 有A和B两个表,join后会有多少种结果,SQL怎么写?

  3. 数据库三范式是什么?

  4. ER图。

  5. 索引。

  6. 事务是什么?事务的特征是哪些,如何理解?四种事务隔离级别是什么?如何理解?四种隔离级别分别会发生什么情况?在平时应该如何选择?

  7. 死锁是什么?引发死锁的情况。四个条件分别是什么,如何理解?如何处理死锁?

  8. 如果发现一条SQL查询语句执行时间很长,应如何排查解决?

  9. 在业务中价钱字段用什么数据类型?

  10. 数据库主从复制的原理?为什么用主从复制,解决了什么问题?

  11. 数据库的锁是怎么实现的。

三、Redis

  1. 持久化的方式

  2. 是单线程的吗?

  3. 在项目中用的是Redis集群吗?

四、Java

  1. ThreadLocal是什么?什么时候会选择存在ThreadLocal中?为什么?

  2. 确保线程安全的方法有哪些?

  3. synchronized加在静态方法上和非静态方法上区别是什么?

  4. 想要实现下单后30分钟未支付关闭订单,如何实现?(我说了定时任务,面试官说还有其他方式吗?大概是想要问Timer类吧?)

  5. 什么是原子操作?

  6. 线程之间如何共享数据?

  7. CountDownLatch和CyclicBarrier分别是什么?

  8. synchronized和ReentrantLock的区别?ReentrantLock叫可重入锁,可重入是什么意思?

  9. java有哪些Collection?

  10. 什么时候用数组,什么时候用ArrayList?

  11. 异常处理机制:Throwable、Exception、Error的关系。

五、Spring相关

  1. IOC是什么?

  2. Bean的生命周期

  3. 如果一个jar包过于老旧,maven库上没有,如何在springboot中使用?(大概是这意思,然而我并不知道)

  4. springboot是什么?为什么用springboot?

六、其他

  1. 三层架构和mvc架构的区别。

  2. 当你走在马路上,要去坐公交车,发现要坐的公交车从你旁边经过,你会怎么做?(这是道智力题吗?黑人问号脸?)

七、秒杀场景

  1. 分布式Session是如何实现的?

  2. 如何优化?除了分流和加缓存,还有哪些思路?

  3. 超卖问题

八、职业规划

  1. 自己的职业规划是什么?

  2. 平常通过什么方式提升技术能力

九、简历上项目的各种问题

总结

面试官除了问是什么,更多的是想知道我对这些的理解、实现原理和实际应用,也确实暴露出自己很多问题,最后就是一种被问蒙了的状态。坦然接受结果,继续努力吧!

想要了解架构技术知识点的,可以关注我的JAVA架构师社区秋㪊:705127209,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。

阿里面试问题总结(Java工程师)