北大java面试,北大青鸟java 面试--常见面试题(下)

本文汇总了Java面试中的关键知识点,包括数据库的常见面试问题,如存储引擎、索引、事务等;中间件和架构中的热点框架如Redis、Kafka、Netty的面试题;以及设计题的常见场景。深入探讨了数据库的优化、中间件的使用以及系统设计的考量,为面试者提供了一份全面的准备指南。
摘要由CSDN通过智能技术生成

在之前的两篇文章中,我们已经提到了java面试中的常见问题,还有部分内容,合肥北大青鸟合工大校区的袁老师在本文也给出,希望对大家的面试过程有些帮助。这是我总结的最后一部分常见面试题:分别是数据库,基础框架,设计题。

一.数据库

在数据库的面试中,常见的面试内容基本上是基于innodb存储引擎的内容,主要是索引的使用,事务,主从同步,分库分表的方案实现。

1. 数据库的常用存储引擎有哪些?能重点介绍innodb和myisam的区别?

2. B+树和hash索引的区别是什么?

3. Innodb的行锁有哪几种?分别是怎么实现的?

4. 数据库的乐观锁和悲观锁的区别?Select * from table for update,select *from table in share mode分别加的是什么锁?

5. 索引在什么时候会失效?了解聚集索引和非聚集索引的区别么?覆盖索引是什么?

6. Mysql的事务有那几个特性?ACID分别是怎么实现的?有几种隔离级别?分别是怎么实现的?默认的隔离级别是?

7. Mysql是怎么实现主备同步的?同步的方式有几种?涉及到的三个线程分别怎么工作?

8. 你们项目有使用分库分表?如何实现?如果要扩数据库节点的话,怎么实现?

9. B+树的优点是什么?为什么mysql的索引使用b+树,为什么不使用B树或者红黑树呢?

10. 数据库的三大范式是什么?最左前缀原则是什么?如果table有a,b有联合索引,那么Select *from  table where a>0 and b=0 ; Select *from  table where a=0 and b>0两个sql语句是否有使用索引?

11. 什么是幻读?Mysql的innodb存储引擎是怎么解决幻读的?

12. Mysql怎么优化,explain指令有了解过?索引怎么创建比较合适?

13. 数据库会死锁么?Innodb是怎么解决死锁的?

14. 如何安全的更改一行数据?

15. In和exist的区别是什么?

16. left join、right join,inner join的区别是什么?

二.中间件和架构

一般常见的中间件,如果你在简历提到有哪些中间件,并且刚好面试官也熟悉这个中间件,那么基本就会问下这方面的内容。常见的面试热点有缓存(Redis,memcached,MongoDB),消息中间件(kafka,rocketMQ,rabbitMQ),zookeeper,rpc框架(grpc,dubbo,thrft),spring框架,dubbo框架,netty框架,mybaits,hibernate等。这里我了解的框架有Redis,kafka,zookeeper,rpc,spring,netty,mybaits等框架。所以下面的题目基本是这些框架的问题。

Netty面试题:

1. simplechannelinboundhandler和channelinboundhandler的区别?

2. netty的内存泄露的检测机制?

3. Bytebuf中使用引用计数进行内存释放和占用?

4. Attr和option的区别?

5. Channelinitionlazier 的作用是什么?

6. 如何从channel中引导一个新的客服端,这样做的好处是什么?

7. Netty的内存零拷贝?

8. Netty的高性能在哪些方面?和nio相比

9. Channe与Socket是什么关系?Channel 与 EventLoop是什么关系,Channel 与ChannelPipeline是什么关系?

10. Netty框架本身存在粘包半包问题?

11. 何时接受客户端请求?

12. 何时注册接受 Socket 并注册到对应的 EventLoop 管理的 Selector ?

13. 客户端如何进行初始化?服务端如何创建?

14. 何时创建的 DefaultChannelPipeline ?

15. Netty内存池实现原理?

16. netty中的对象池的分析?

17. netty的心跳处理在弱网下怎么办。

18. netty的hashwheeltimer的用法,实现原理,是否出现过调用不够准时,怎么解决。

Redis面试题:

1. Redis的高性能体现在哪些方面?

2. Redis的主备同步流程?

3. Redis的事务怎么实现?有什么缺点?

4. Redis有几种部署模式?重点讲下集群和哨兵机制的实现?

5. Redis的常见数据类型?底层是怎么实现的?

6. Redis的持久化过程?

7. Redis的pipeline机制有了解过?集群下怎么实现?

8. 常见的Redis的优化方案?

9. 常见的Redis问题?缓存击穿,缓存雪崩,热点key问题解决方案?

10. Redis在集群下做分布式锁有什么优缺点?

11. Codis和Redis集群的区别?

12. Redis的过期策略怎么实现的?Redis的淘汰策略是怎么实现的?

13. Hyperloglog有使用过?怎么实现的?

14. 如果Redis主备切换回发生什么问题?

15. Redis的map类型是怎么实现扩容的?和jdk的hashmap的扩容有什么区别?

16. Redis如果cpu过高,怎么解决?在使用中有出现什么问题?是怎么解决的?

17. Redis的reactor模型能否介绍下?

18. Redis结合lua有什么作用?Eval和evalsha的区别?

19. 介绍下Redis的SDS的优势?RESP有了解么?

20. 如果有海量的数据,怎么查询某个key是否存在?

21. 如果要统计某一天的页面访问量怎么实现?

Kafka面试题:

1. 集群的副本同步机制?

2. Kafka消息的格式?

3. Kafka的高性能的原因?

4. 如果leader crash时,ISR为空怎么办?

5. Kafka的生产者发送消息流程是怎么样?

6. 如何保证消息只消费一次?如何保证消息不丢失?

7. 如何增加写的性能?

8. Kafka怎么判断一个broker是否还存活?

9. Kafka怎么实现分区策略,怎么实现负载均衡?

10. Kafka的reblance的流程?在什么情况下会发生reblance?

11. Kafka消息的幂等性和事务是怎么实现的?

12. Kafka的时间轮算法是怎么实现的?如果出现不准确怎么办?

13. 如果kafka消费者消费超时会发生什么?怎么避免kafka的消费超时?

14. Zookeeper在kafka中有哪些作用?

15. Kakfa的ack机制?0,-1,1分别代表什么?

16. Kafka是怎么实现选举的?哪些地方需要选举?

17. 如何设计保证kakfa中有某个特征的消息的是严格按照顺序消费的?

18. 有了解哪些消息队列?能否做下对比?

Zookeeper面试题:

1. zookeeper的watch机制?

2. Zookeeper如何扩容,扩容过程会不会有影响?

3. Zk的数据是怎么同步的?

4. 如何优化zk的性能?

5. Zk的事务是怎么实现的?

6. 使用zk实现分布式锁有哪些弊端?

7. Zookeeper可以监听哪些数据?

8. Zookeeper的节点有哪几种类型?

9. Zookeeper为什么建议是奇数台部署?

10. 如何使用zookeeper实现一个服务发现?

RPC框架的面试题:

1. 常见的RPC框架有哪些?能否做个对比?

2. Grpc框架的原理有了解?

3. Rpc框架的原理介绍下?Zookeeper在框架中的作用是什么?

Spring面试题:

1. 聊聊spring的IOC和AOP?其底层原理分别是什么?

2. Spring支持哪几种注入的方式?

3. BeanFactory和ApplicationContext有什么区别?BeanFactory和FactoryBean的区别?

4. Bean的声明周期?Bean的作用域有几种?单例bean是线程安全的么?

5. Springboot的启动流程?

6. Spring有几种自动装配的方式?

7. Spring有用到哪几种设计模式?Spring中主要的模块有哪些?

8. Spring的事务有了解?管理方式有几种?声明式事务的实现原理是?传播级别有几种?

9. Spring的事件类型有几种?

10. Springmvc的流程?

11. SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

12. Spring的常用注解有哪些?分别代表什么意思?

13. Spring怎么解决循环依赖问题的?

14. SpringMvc里面拦截器是怎么写的?

15. Spring AOP和AspectJ AOP有什么区别?

16. Springcloud和dubbo的区别?

17. ribbon和feign的区别?

18. ribbon、feign以及hystrix的超时、重试设置?

19. hystrix的隔离策略和zuul的功能是?

20. 说说Eureka的服务发现过程?和zookeeper相比优势是什么?

Mybaits面试题:

1. mapper的加载方式?

2. selectOne和selectUser方法有什么区别?

3. mybaits 的实现原理?

4. Configuration参数中有哪些常用的?分别介绍一下?

5. statementHandler 和prepareStatementHandler 的区别?

6. mybaits的一级缓存和二级缓存的区别?

7. #{}和${}的区别是什么?

8. Mybatis是如何进行分页的?分页插件的原理是什么?

9. 使用MyBatis的mapper接口调用时有哪些要求?

10. Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

11. 怎么使用mybaits实现分表功能?

三.设计题

设计题是面试中一个必备环节,在现实中,面试官一般的设计题往往会给一个实际场景,问你怎么实现,会有什么问题,设计题无非高并发场景,持久化场景,数据库场景。这些设计题有一些基本的套路,我们需要实际中遇到问题去分析,然后使用相关的方案进行解决。

1. 如何设计一个高并发的支付系统?

2. 如何设计一个抢红包系统?

3. 如何解决超卖现象?

4. 如何设计一个线程池?

5. 如何设计一个分布式coutdownlatch?

6. 如何设计一个微博关注度的数据库?

7. 如何设计一个抢购系统,如果用户在规定时间内没有付款则订单取消?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java面试宝典。北大青鸟 这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套面试宝典,即使你已经学过了有关的技术,那么至少也需要一个月的时间才能消化和掌握这套面试宝典,所以,大家应该早作准备,从拿到这套面试宝典之日起,就要坚持在每天闲暇之余学习其中几道题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了。 答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得) 答案的段落分别,层次分明,条理清晰都非常重要,从这些表面的东西也可以看出一个人的习惯、办事风格、条理等。 要讲你做出答案的思路过程,或者说你记住答案的思想都写下来。把答题想着是辩论赛。答题就是给别人讲道理、摆事实。答题不局限于什么格式和形式,就是要将自己的学识展现出来! 别因为人家题目本来就模棱两可,你就心里胆怯和没底气了,不敢回答了。你要大胆地指出对方题目很模糊和你的观点,不要把面试官想得有多高,其实他和你就是差不多的,你想想,如果他把你招进去了,你们以后就是同事了,可不是差不多的吗? 关于就业薪水,如果你是应届生,那不能要高工资,好比大饼的故事,没有文凭还想拿高工资,就去中关村缺什么补什么吧!少数人基础确实很好,在校期间确实又做过一些项目,那仍然是可以要到相对高的工资的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值