栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

javaguide及面试突击

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javaguide及面试突击

1.字符型常量和字符串常量的区别? (形式、含义、占内存大小) 2.使用过可变长参数吗?遇到方法重载时,会优先匹配固定参数还是可变参数的方法呢?Java可变参数编译后会被转换成什么? 3.静态方法和实例方法有何不同。1.调用方式2.访问类成员是否存在限制。 4.==和equals的区别? 5.为什么重写equals方法时必须重写hashCode()方法? 6.包装类型的常量池技术了解吗? 7.自动装箱和自动拆箱了解吗?原理是什么? 8.什么是深拷贝、什么是浅拷贝? 9.string、stringbuffer、stringbuilder的区别?string为什么是不可变的? (可变性、线程安全、性能) 10.何为反射?反射机制的优缺点? 11.Java中常见的三种IO模型。 12.反射?反射优缺点?获取Class对象的四种方式? 13.List Set Map 三者的区别?集合框架底层数据结构总结? 14.ArrayList与Vector的区别?Arraylist与LikedList区别?ArrayList的扩容机制? 15.Hashmap和HashTable 的区别?(线程安全;xiaolv;对nullkey和null值的支持;初始容量大小和扩容量大小的不同;底层数据结构) 16.HashMap和TreeMap的区别?HashMap底层实现?HashMap集合遍历? 17.集合判空;集合转Map;集合遍历;集合去重;集合转数组;数组转集合; 18.hashtable和concurrentHashMap区别 19.说说线程的状态? 20.什么是线程的死锁?如何避免死锁? 21.说说sleep()方法和wait()方法区别和共同点? 22.为什么调用start()方法时会直接执行run方法,为什么不能直接调用run()方法。 23.对于synchronized关键字的了解 24.说一下你是怎么使用synchronized关键字 25.构造方法可以使用synchronized关键字修饰吗? 26.JDK1.6之后,锁主要存在的四种状态? 27.synchronized和ReentrantLock的区别? 28.synchronized和volatile的区别? 29.为什么要用线程池? 30.执行execute()方法和submit()方法的区别是什么呢? 31.线程池的创建,阿里手册是如何建议的。 32.ThreadPoolExecutor构造函数重要参数分析 33.MyIsAm和InnoDB的区别

(是否支持行级锁、是否支持事务、是否支持外键、是否支持数据库异常崩溃后的安全恢复)

MVCC 可以看作是行级锁的一个升级,可以有效减少加锁操作,提高性能。

表级锁和行级锁对比

34.何为事务?事务的四大特性?事务的实现原理?并发事务会带来哪些问题?隔离级别? 35.InnoDB为什么推荐自增id?

自增ID有序,会按顺序往最后插入,而UUID无序,随机生成,随机插入,会造成频繁页分裂,内存碎片化,大量随机IO

36.什么是索引?索引优缺点? 37.索引底层数据结构,hash索引最大的缺点? 38.索引的类型?聚簇索引和非聚簇索引?聚簇索引优缺点?非聚簇索引优缺点? 39.索引设计原则?

总结:索引设计原则要求查询快,占用空间少;一般建在where条件,匹配度高的,用联合索引,更新频繁不适合。

40.索引失效场景?

以“%”开头的like语句,索引无效,后缀“%”不影响

or语句前后没有同时使用索引

组合索引要遵守最左前缀原则——不使用第一列索引 失效

在索引字段上使用not,<>,!= (对它处理是全表扫描)

对索引字段进行计算操作,字段使用函数也会失效

is not null

41.sql语句优化(定位低效率sql,慢查询怎样处理)

1、先设置慢查询(my.ini或数据库命令)

2、分析慢查询日志

3、定位低效率sql(show processlist)

4、explain分析执行计划(是否索引失效,用到索引没,用了哪些)

5、优化(索引+sql语句+数据库结构优化+优化器优化+架构优化)

42.Mysql数据库优化

数据库设计方面

1.数据库和表的字符集统一使用UTF8

2.所有表和字段都需要添加注释,(从一开始就进行数据字典的维护)

3.控制单表数据数据量,建议在500万内

4.尽量做到冷热数据分离,减小表的宽度

5.谨慎使用mysql分区表,建议使用物理分表管理大数据

42.1大表优化

当MySQL单表记录数过大时,数据库的CRUD性能明显降低。

措施:1.查询时必须设置范围条件2.读写分离:经典的数据库拆分方案,主库负责写,从库负责读3.垂直分区,根据相关性进行拆分,将一张列比较多的表拆成列比较少的。优点:使列数据变少,提高查询效率,简化表的结构,易于维护。缺点:主键冗余。4.水平分区:保持表结构不变,对表行进行拆分,将数据分散到不同的表中和库中。

字段方面

1.尽量把所有列设置为NOT NULL,索引null列需要额外空间保存,所以占用更多空间,进行比较和计算时要对null值进行特殊的处理。

2.财务相关的金额类数据必须使用decimal类型

3.存储时间用timestamp(4字节)和datetime(8字节)

索引方面

1.限制每张表的索引数量,建议单表索引不超过5个

2.innoDB表必须有主键

3.索引列的选择,那些知识

4.对于频繁地查询优先考虑使用覆盖索引

43.sql优化

 1.为搜索字段创建索引

2.避免使用select*,列出需要查询的字段

3.垂直分割表

4.选择正确的存储引擎

49.为什么用缓存?

提高用户体验以及应对更多用户,高性能、高并发

50.redis除了能做缓存,还能做什么? 51.redis常见的数据结构? 52.redis是单线程怎么监听大量的客户端连接? 53.redis是如何判断数据是否过期? 54.redis过期数据的删除策略了解吗?redis采用的是那种策略? 55.redis内存淘汰机制了解吗?(6种策略)

56.Redis 持久化机制(怎么保证 Redis 挂掉之后再重启数据可以进行恢复)

rdb  aof

57.redis事务说一下 ?

Redis 事务提供了一种将多个命令请求打包的功能。然后,再按顺序执行打包的所有命令,并且不会被中途打断。Redis 是不支持 roll back 的,因而不满足原子性的(而且不满足持久性)。

58.Redis 可以做消息队列么? 59.什么是缓存穿透?缓存雪崩(针对redis服务不可用的情况;针对热点缓存失效的情况解决方法)?缓存击穿?解决方案? 60.如何保证缓存和数据库的一致性?

建议采用先更新数据库,再删除缓存方案。为了避免第二步执行失败,采用异步重试,我可以把操作缓存这一步放到消息队列中,由消费者操作。同时,要尽可能的保证【主从复制】不要有太大延迟,降低出现问题的概率。

出现问题得满足三个条件:

1.缓存刚好失效

2.读请求和写请求

3.更新数据库+删除缓存的时间,要比读数据库+写缓存时间短

但是条件3发生的概率其实非常低,因为写数据库一般会加锁,所以写数据库,通常是要比读数据库时间少。

延迟双删的问题在于延迟时间到底设置多长时间,这个时间在分布式和高并发场景下,很难评估,很多时候是凭借经验大致估算的 ,例如延迟1-5s ,只能降低不一致概率,时间设置时间长了 会影响性能,时间短了,会出现一致性问题。     

消息队列保证可靠性:写到队列中的消息,成功消费之前不会丢失(重启项目也不担心)

61.三种常用缓存读写策略 62.springboot如何实现自动装配?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号