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编辑  收藏  举报

导航