一位求职者的面试经历:涵盖17家公司的Java后端职位面试问题与总结分享

内容概览:

图片

以下是正文内容。

这位读者在秋季招聘期间面试过多家中小型企业和银行,分享了他的面试经历,希望能为其他求职者提供一些参考。

大多数记录仅限于初面,后续面试主要是HR面试或者表现不佳,因此未能详细记录。

万得

  1. 为什么选择MyBatis而不直接使用SQL?
  2. JWT的组成部分及使用原因?
  3. 排序算法的稳定性是什么?
  4. HashMap为什么需要两倍扩容?
  5. 对Java锁的理解,包括悲观锁和乐观锁的实现,CAS是什么?
  6. synchronized的底层原理是什么?
  7. 为什么需要使用RESTful风格?

工行软开提前批

过于注重学历与分数,群中70%的成员都是985院校的学生,而我因成绩不佳受到质疑。

  1. 请解释二分查找。
  2. 你是如何学习MySQL的?
  3. 之后的过程是闲聊和对成绩的讨论,整体面试体验较差。

同花顺

  1. JVM的内存结构、垃圾回收策略和算法。
  2. 排序算法及其时间复杂度。
  3. 你对MySQL索引有什么了解?
  4. 项目中如何进行分表?
  5. 数据库的隔离级别是什么?
  6. MySQL锁的机制?

富士通南大软件

  1. 计算机网络的七层和五层模型。
  2. RESTful的具体应用是什么?
  3. JWT从Cookie到JWT解决了什么问题,Cookie的作用是什么?
  4. 还有其他未记起的问题。

浙商银行

  1. MyBatis中的#和$的区别。
  2. MyBatis的一、二级缓存。
  3. @Autowired与@Resource的区别。
  4. Spring Boot的自动配置原理。
  5. 数据库隔离级别以及如何通过可重复读解决幻读的问题,数据库的MVCC机制。

招银网络

初面:

  1. Spring的自动装配过程。
  2. Spring中的拦截器与过滤器的区别。
  3. 接口与抽象类的比较。
  4. Spring Boot相较于Spring的优势。
  5. MyBatis的优点。

复面:

  1. 设计一个考核系统,数据库如何设计(对此类问题之前没有准备,回答得很随意)。
  2. MyBatis中String如何映射到varchar?
  3. 当实体类中是String而数据库中是Integer时会出现什么情况?
  4. 设计一个权限系统。

面试官建议我需要进一步学习。

卓望数码

  1. 泛型的作用及桥方法、泛型擦除的概念。
  2. ArrayList与LinkedList的区别,以及ArrayList的扩容方式。
  3. 为什么不推荐使用内置线程池创建方式?
  4. CAS的概念。
  5. MySQL索引设置时的注意事项,索引类型及失效场景。
  6. Redis的持久化方式是什么?
  7. 你了解高可用性吗?
  8. Spring常用注解的用途,两种注入方式的区别,以及@SpringBootApplication注解的含义。
  9. #{}与${}的区别。

深圳同为

  1. 你为何使用ThreadLocal?其他线程能否获取这些信息?如何获取?
  2. 使用策略模式的原因及其与模板方法模式的区别,是否要复习设计模式?
  3. 系统中遇到的难点是什么?
  4. 使用JWT的原因及其优点?
  5. Java的设计原则是什么,为什么需要遵循这些原则?
  6. 如何查找慢SQL,为什么会出现慢SQL?数据库优化的方法有哪些?
  7. 如何将用户踢下线?使用JWT的方式。
  8. 线程的不同状态及其运行情况。
  9. HTTP状态码的含义。
  10. 各种隔离级别分别能够防止哪些问题?
  11. HashMap为什么选用红黑树而非其他树?
  12. synchronized与lock的区别?
  13. Spring如何管理事务?
  14. Spring的几个事务传播级别是什么?

顺丰

  1. 如何进行数据库性能分析?如何排查慢SQL?
  2. 数据库中的小说是如何存储的?
  3. 如何处理大量数据以便存入Redis?
  4. 你对Java中的锁有什么了解?
  5. MyBatis中的resultMap继承情况。
  6. MyBatis-Plus的底层原理。
  7. HashMap与ConcurrentHashMap的区别。
  8. 双亲委派机制、类加载器及其源码分析。
  9. 你用过JUC包下的哪些工具?
  10. 解决缓存雪崩、击穿和穿透的方法,这三者本质上有什么区别?
  11. 聚集索引和覆盖索引的定义。
  12. Spring Boot的自动装配原理。

上海银行

  1. 项目中如何使用策略模式实现用户认证?
  2. 主键索引和唯一索引是否可以存储null值?
  3. 如何判断链表是否有环?
  4. synchronized锁的升级过程。
  5. ConcurrentHashMap与HashMap的比较。
  6. 索引失效的场景。
  7. in()一定会使用索引吗?
  8. 事务的传播级别。
  9. 项目中你做了哪些优化?(这个可以详尽讨论)
  10. MySQL的缓存机制。

用友 KPI

  1. HashMap的底层原理及遍历方式。
  2. 你是否使用过Spring Cloud?用过哪些RPC?
  3. 包装类的底层结构需要了解吗,Integer(100)和Long(100)是否相等?
  4. 事务的隔离级别是什么?
  5. Spring的优点是什么?
  6. ConcurrentHashMap的原理是什么?

上海华测导航技术

  1. 自我介绍。
  2. RabbitMQ的应用场景。
  3. Redis数据类型及具体用法。
  4. 代理模式的定义及具体应用场景。
  5. 你如何理解HashMap?
  6. Spring的注解使用。
  7. RabbitMQ的高可用性。
  8. 进程和线程的区别。
  9. 线程池的类型及其拒绝策略。
  10. 各种设计模式的理解。
  11. @Autowired与@Resource的区别。

交通银行

  1. 你对设计模式的理解。
  2. 创建线程的方式:start和run,哪个用于启动线程?线程池的优势是什么?
  3. 数据库表优化的要点。
  4. 索引失效的原因。
  5. 谈谈你对软件工程的理解,并结合你参与的项目。

思维爆炸

  1. RabbitMQ的作用。
  2. SQL如何优化?
  3. MyBatis的一、二级缓存。

契约锁

  1. JVM内存结构。
  2. 项目如何实现策略模式的认证?
  3. 线程池的过期时间的具体用途。
  4. 如何判断一个线程是否需要回收?
  5. 索引失效的原因。
  6. SQL优化的方法。
  7. Hash索引与B+树索引有什么区别?
  8. 你如何理解索引的概念?
  9. 覆盖索引的实现方式。
  10. Spring Boot的自动装配原理。

永赢金租

  1. Integer包装类比较时,两个包装类用==会有什么结果?
  2. Redis的持久化机制。
  3. ThreadLocal的底层结构需要了解吗?
  4. Redis的持久化方式。
  5. HashMap的底层原理。
  6. Spring的数据传播行为。
  7. 如果项目在业务进行到一半时宕机,你会怎么处理?
  8. 如何防止小说被爬取?

总结

我现在有些后悔大学时没有更认真地学习,因为面试中大多会涉及到成绩相关的问题,每次填写成绩时只能填50%(实际更低),而且还有挂科、无奖学金、无实习经历,简历几乎为空。每次自我介绍只能在短短的一分钟内快速完成,甚至感到尴尬。