济南IT培训 > 达内新闻
互联网公司Java高级面试题(三)
- 发布:济南达内
- 来源:济南达内
- 时间:2018-08-20 16:36
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like "%aaa%"-济南达内负责整理
任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势.
悲观锁和乐观锁的含义(悲观锁:真正的锁,只允许一个线程操作同一条记录,
乐观锁:一种冲突检测机制,一般通过版本号或时间戳方式实现,对性能影响较小)
索引使用及其索引原理(索引底层实现:B+树)
Query查询优化
1.explain sql查看执行效率,定位优化对象的性能瓶颈
2.永远用小结果驱动大的结果集
3.尽可能在索引中完成排序
4.只取出自己需要的column,而不是*
5.使用最有效的过滤条件
6.用表连接代替子查询
7.当只要一行数据时,使用limit 1
8.为搜索字段建立索引
9.千万不要ORDER BY RAND(),避免select *
10.尽可能使用NOT NULL

11.开启查询缓存,并为查询缓存优化查询语句
eg:
select username from user where add_time >= now()
注意:
1.这样的语句不会使用查询缓存,
2.像NOW()和RAND()或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的.所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存
3.修改, 对now()进行处理,只取年月日 yyyy-MM-dd,变为一个不衣变的值
Redis的5种数据结构和使用场景
Redis的持久化机制
Redis中Hash类型的底层2种实现区别(压缩表: 省内存 和 跳跃表:查询更快)
Redis作为分布式消息队列使用,性能和注意点
一线互联网公司Java高级面试题总结!
数据结构和算法
常见的排序算法就不说了,需要理解其原理和会写代码,还有时间空间复杂度也要知道
队列、栈:需要理解其存取结构,并能在某些场景下使用
二叉树:树的遍历、树的深度、按层次输出、平衡二叉树、逆序打印树等
链表:逆序、合并两有序的链表、判断链表是否又环、链表倒数第K个元素等
字符串:KMP算法、动态规划(这个是重点,需要好好理解动态规划,常见的题有:求解最长回文子串、求解最长公共子串等)
海量数据处理:现在好多大公司都会问海量数据的处理,所以需要掌握常见的处理方法,比如Bit-map、分而治之、hash映射等,可以百度看看相关的文章,加深理解
以上就是济南达内给大家做的内容详解,更多关于java知识的学习,请继续关注济南达内
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 哈尔滨
- 济南
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 长沙
- 昆明
- 太原
- 无锡
- 石家庄
- 南宁
- 佛山
- 珠海
- 宁波
- 保定
- 呼和浩特
- 洛阳
- 烟台
- 运城
- 潍坊
互联网公司Java高级面试题(三)
- 发布:济南达内
- 来源:济南达内
- 时间:2018-08-20 16:36
另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like "%aaa%"-济南达内负责整理
任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势.
悲观锁和乐观锁的含义(悲观锁:真正的锁,只允许一个线程操作同一条记录,
乐观锁:一种冲突检测机制,一般通过版本号或时间戳方式实现,对性能影响较小)
索引使用及其索引原理(索引底层实现:B+树)
Query查询优化
1.explain sql查看执行效率,定位优化对象的性能瓶颈
2.永远用小结果驱动大的结果集
3.尽可能在索引中完成排序
4.只取出自己需要的column,而不是*
5.使用最有效的过滤条件
6.用表连接代替子查询
7.当只要一行数据时,使用limit 1
8.为搜索字段建立索引
9.千万不要ORDER BY RAND(),避免select *
10.尽可能使用NOT NULL

11.开启查询缓存,并为查询缓存优化查询语句
eg:
select username from user where add_time >= now()
注意:
1.这样的语句不会使用查询缓存,
2.像NOW()和RAND()或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的.所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存
3.修改, 对now()进行处理,只取年月日 yyyy-MM-dd,变为一个不衣变的值
Redis的5种数据结构和使用场景
Redis的持久化机制
Redis中Hash类型的底层2种实现区别(压缩表: 省内存 和 跳跃表:查询更快)
Redis作为分布式消息队列使用,性能和注意点
一线互联网公司Java高级面试题总结!
数据结构和算法
常见的排序算法就不说了,需要理解其原理和会写代码,还有时间空间复杂度也要知道
队列、栈:需要理解其存取结构,并能在某些场景下使用
二叉树:树的遍历、树的深度、按层次输出、平衡二叉树、逆序打印树等
链表:逆序、合并两有序的链表、判断链表是否又环、链表倒数第K个元素等
字符串:KMP算法、动态规划(这个是重点,需要好好理解动态规划,常见的题有:求解最长回文子串、求解最长公共子串等)
海量数据处理:现在好多大公司都会问海量数据的处理,所以需要掌握常见的处理方法,比如Bit-map、分而治之、hash映射等,可以百度看看相关的文章,加深理解
以上就是济南达内给大家做的内容详解,更多关于java知识的学习,请继续关注济南达内
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 厦门
- 哈尔滨
- 济南
- 福州
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 大连
- 长沙
- 昆明
- 温州
- 太原
- 南昌
- 无锡
- 石家庄
- 南宁
- 中山
- 兰州
- 佛山
- 珠海
- 宁波
- 贵阳
- 保定
- 呼和浩特
- 东莞
- 洛阳
- 潍坊
- 烟台
- 运城