java偏功能实现的面试题,教你如何做面霸( 四 )


说一下mysql的事务隔离级别(>10)
未提交读(Read Uncommitted):允许脏读 , 也就是可能读取到其他会话中未提交事务修改的数据 。提交读(Read Committed):只能读取到已经提交的数据 。可重复读(Repeated Read):可重复读 。在同一个事务内的查询都是事务开始时刻一致的 , InnoDB默认级别 。在SQL标准中 , 该隔离级别消除了不可重复读 , 但是还存在幻读 。串行化(Serializable):完全串行化的读 , 每次读都需要获得表级共享锁 , 读写相互都会阻塞 , 效率最低 , 可以避免脏读 , 幻读 , 不可重复读 。这四种隔离等级从上向下依次变低
b tree与b+tree (>12k)
篇幅有限请自行百度
同样 , 必备技能 , 但是小公司没有问的那么深 , 能熟练的书写sql语句 , 掌握常用语法就已经达标 。在sql优化方面可以说是必杀技了 , 建议了解 。
三.设计模式 说说了解哪些设计模式 (在我这 , 一般到这就结束了 。。)(>5)
根据了解扩展
详细描述一下工厂模式 , 代理模式 。(>7)
概念:委托一个代理类对另一个类进行控制(代理类中有被代理类的对象 , 同时可以在代理类中增强)使用场景:aop(可以控制被代理类是否被调用 , 是否被代理) 。优点: 1.确保被代理类的隐秘性2.降低耦合性(不用挨个加需要增强的方法)分静态代理 , jdk代理 , CGLib动态代理
篇幅有限 具体的请自行了解
说说在日常编码中使用过哪些设计模式(>7)
代理模式 , 工厂模式 , 外观模式 , 策略模式 。请自行扩展 。
介绍一下外观模式(>8)
它为子系统中的一组接口提供一个统一的高层接口 。这一接口使得子系统更加容易使用 。(体现为service和dao,一个service可以调用多个dao)
代理模式 , 装饰者模式 , 适配器模式三者类图相同 说说三者区别 (>9)
适配器模式:主要强调适配 , 在不使用继承的情况下 , 可以调用其他不同的接口 。代理模式:主要强调控制 , 被代理的类不一定执行 , 可能不允许被代理 。装饰者模式:主要强调增强 , 目的是在原类中加入需要装饰 。而被装饰者一般情况下都会被执行
介绍策略模式和状态模式的区别(>10)
这个也比较常问 , 所以好好理解 建议仔细研究一下:https://www.zhihu.com/question/23693088
设计模式在日常使用中使用的不多 , 但是也需要了解一些基础来扩宽以后的视野 。现在阶段可以适当了解应付一下面试 。
四. #{}与%{}区别(>5)
{}是预编译处理 , ${}是字符串替换 。Mybatis 在处理#{}时 , 会将 sql 中的#{}替换为?号 , 调用 PreparedStatement 的 set 方法来赋值;Mybatis 在处理${}时 , 就是把${}替换成变量的值 。使用#{}可以有效的防止 SQL 注入 , 提高系统安全性
说说sql注入(>5)
账号密码输入‘’ or 1=1查询语句变成以下形式SELECT * FROM Users WHERE username=‘’ or 1=1 AND password=‘’ or 1=1;
说说常用标签(>5)
foreach,where,if,sql,set,include,sql,choose , curd不多说
mysql自增主键怎么返回(>6)
【java偏功能实现的面试题,教你如何做面霸】