java面试笔记
1. MyBatis中#和$的区别?
答:
#:可防止SQL注入;预编译;会对传入的数据自动加引号。
$: 无法防止SQL注入;非预编译;传入的参数直接显示在SQL中。
2. 批量插入1万条数据---考虑效率?
答:通过 合并数据+事物 的方式效率更高。
3. 索引失效的原因有哪些?
答:1. 复合索引:不遵守最左匹配原则;2. 在索引列上使用函数;3. 使用不等于,like(以%开头),类型隐式转换(字符为数字时不添加引号)
4. 如何分库分表?
答:可以通过分库分表中间件(MyCat)/手工写SQL脚本进行拆分。
5. 四种隔离级别分别对应什么锁?https://blog.csdn.net/chenyiminnanjing/article/details/82714341
答:读未提交:行级共享锁;读已提交:行级共享锁,行级排他锁;可重复读:行级共享锁,行级排他锁;串行化:表级共享锁,表级排他锁
6. 数据库如何做优化?
答:1. 避免select *;2. 合理使用索引;3. 选择合适的数据类型;
7. 事务失效的原因:https://blog.csdn.net/lgb105/article/details/80461556,声明式事物是基于代理模式的,绕过代理事物会失效。解决方案就是通过代理对象来调用或者在类中注入自己来调用。(自身调用、异常被吃、异常抛出类型不对 也会导致事务失效)。
8. RabbitMQ消息丢失怎么解决?
答:生产者丢失:可通过RabbitMQ事物或者confirm机制来保证。
RabbitMQ丢失:可通过开启RabbitMQ的数据持久化+confirm机制来保证。
消费者丢失:可通过手工 ACK 来保证。
9. 工作中用过哪些设计模式?
答:1. 策略模式:改造if-else
2. 单例模式:读取配置文件
10. 一般把什么数据存在redis里面?
答:热点数据(经常查询不经常修改的数据),统计点击率或者点赞率的数据(可以避免并发问题)。
11. 哪些对象可以作为GC Roots?
答:栈引用的对象,本地方法栈引用的对象,常量引用的对象,静态变量引用的对象
12. 强引用,软引用,弱引用和虚引用各自使用场景?
答:https://www.jianshu.com/p/825cca41d962
13. 代码优化?
答:1. 尽量使用局部变量;2. 及时关闭流;3. 使用同步代码块替代同步方法;
14. Nginx 主备?
答:可通过Nginx+Keepalived实现主备切换
15. 什么是JWT(JSON Web Token)?
答:用来解决无状态登陆问题。
16. ZooKeeper选举?
答:https://www.jianshu.com/p/c2ced54736aa
17. 线上问题排查?
答:https://blog.csdn.net/GitChat/article/details/79019454
18. MySQL主从模式
答:https://blog.csdn.net/ck784101777/article/details/100918876
19. MySQL读写分离
答:https://segmentfault.com/a/1190000003716617
20. Redis集群模式
答:https://www.cnblogs.com/51life/p/10233340.html
21. Redis持久化
22. RabbitMQ集群模式
答:https://www.jianshu.com/p/588e1c959f03
23. 为什么用了索引之后,查询就会变快?
答:https://blog.csdn.net/jiaonizuoren/article/details/103774568
24. 连续调用多个外部系统的写接口-如何保证数据一致性(思路)
答:https://blog.csdn.net/linsongbin1/article/details/80092824
25. RabbitMQ如何解决被重复消费和数据丢失的问题?
答:https://www.jianshu.com/p/5ade5bf0dcd9
26. Dubbo超时和重连机制
答:https://www.cnblogs.com/binyue/p/5380322.html
27. zookeeper挂掉了dubbo还能继续使用吗?
答:https://blog.csdn.net/qq_38366063/article/details/92387458
28. Dubbo 负载均衡的实现
答:https://cloud.tencent.com/developer/article/1638477
29. Redis事务
答:https://www.zhihu.com/question/35949129
30. Spring 容器
答:https://blog.csdn.net/qq_34598667/article/details/83245753
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Java基础:
1. 什么是线程池?
答:线程池是一种预先创建线程的一种技术。常用线程池方法如下:
https://www.zhihu.com/question/23212914
2. 线程怎么返回结果?
答:1. 把最后结果传给实例变量 2. 通过Callable接口的call方法
3. 哪些集合类是线程安全的?
答:vector,stack,hashtable
服务端相关技术:
1. 什么是负载均衡?
答:对系统中的负载情况进行动态调整,以尽量消除或减少系统中各节点负载不均衡的现象
2. 怎么解决并发问题?
答:增加带宽、增加服务器、数据库优化、使用缓存、代码优化、限流
专业术语:
QPS(Query Per Second):每秒请求量
TPS(Transaction Per Second):每秒事务处理量
posted on 2017-12-20 20:58 beyondchina 阅读(428) 评论(0) 编辑 收藏 举报