中孚信息Java后端一面面经
面试问题:
项目:
介绍一下项目,讲一下项目的具体开发流程。
SpringBoot中怎么处理事务的。有没有了解底层实现。
MyBatis框架是干什么的。java设计模式的六大原则一法则
-
单一原则:一个类只做一件事。
-
依赖反转原则:设计和实现要依赖于抽象类,而不是具体的类。
-
里氏替换原则:任何时候都可以使用子类型替换父类型。
-
开闭原则:对扩展开放,对修改关闭。
-
接口隔离原则:接口要小而精,拒绝臃肿。实现的功能要细分,不能让一个接口实现太多的功能,这样可能会造成数据逻辑错误。
-
合成聚合复用原则:优先使用合成聚合关系复用代码。
数据结构:
排序算法有哪些
操作系统:
进程间的通信方式。线程间的通信方式。
计算机网络:
1. TCP的三次握手2. 为什么要三次握手
3. 四次挥手
4. 四次挥手的中间两次可不可以合并成一次。
数据库:
1. 数据库都学了什么2. 数据库索引的底层实现是什么。
3. mysql数据库的隔离等级是什么:
4. mvcc是怎么实现的。
-
MySQL InnoDB 引擎使用 redo log(重做日志) 保证事务的持久性,使用 undo log(回滚日志) 来保证事务的原子性。
-
MySQL InnoDB 引擎通过 锁机制、MVCC 等手段来保证事务的隔离性( 默认支持的隔离级别是 REPEATABLE-READ可重复读 )。
-
保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。
6. B+树的结构
7. 对一个有索引的表进行查找时,查找流程是什么。
8. sql注入攻击
sql注入,简单来说就是用户在前端web页面输入恶意的sql语句用来欺骗后端服务器去执行恶意的sql代码,从而导致数据库数据泄露或者遭受攻击。
防御:
1.预编译:JDBC进行连接时使用PreparedStatement类去代替Statement,或者传入的条件参数完全不使用String字符串
2.占位符:在用mybatis时,则尽量使用#{param}占位符的方式去避免sql注入
面试总结:
大约面试了四十分钟作用,当时走的是提前批,问的问题挺基础的,基本都是八股文。面试官听声音应该很年轻,语气挺好的,就是只会给你提问题,不会给你答复,这个做的挺不好的。