网新 8 1 二面
1. 自我介绍
2. 用英文介绍一下最近的一个项目
3. 说说数据库中的索引
说了索引概念,底层数据结构,然后说了索引的类型,说了可能会失效,然后面试官问失效的场景
4. 说说索引失效的场景
说了最左匹配原则,like, 函数,范围查询 然后面试官说还有一些其他简单的场景可以去了解下
5. 有没有处理过慢sql的问题
说了处理线上场景的案例,如何使用explain关键字进行分析慢sql的问题,以及如何保证索引的充分使用,避免使用select * 等,然后也要考虑业务是否可以减少没必要的sql查询,减少连表。
6. 消息队列有了解过Kafka吗和RocketMQ有区别?
说了都是高可用,高性能,高扩展性的消息队列,然后RocketMQ是在Kafka的基础上进行了架构的减少,功能的增加。架构的减少主要体现了摈弃了Zookeeper作为分布式配置集群,功能的增加,主要体现在RocketMQ增加了延迟队列,事务消息,消息过滤等。然后说了kafka主要用于大数据场景,RocketMQ有更多的功能。
7. 怎么避免重复触发和消息丢失
说了重复触发主要是通过token验证的机制,在消费的时候,去对比token是否一致,不一致就丢弃。
将接口设置则幂等的
消息丢失主要是通过消息确认机制,消费完后发生ack确认,然后重发
8. 怎么探测到客户端是否有收到消息
过消息确认机制,消费完后发生ack确认
9. 多个消息,保证消息的有序执行
说了没做过这方面的业务,但是猜想可以将提前到的消息缓存起来,然后通过一些滑动窗口的机制,保证有序性。然后面试官说基本思想正确,回头可以去了解写。
10. 简历中有写处理高并发的场景,说说
说了主要是在多个线程下去处理共享资源造成的问题。针对接口的场景,说了每天接口有300w次请求,发现有时出现数据问题,后面通过分布式锁的机制去分开同一个用户的并发请求。
11. 如果是在同一个应用里面,线程之间怎么解决
说了使用一些本地锁,比如sychronized,reententlock,乐观锁,CAS等。
12. 有用过线程池吗
说了用异步comptablefuture,就使用了线程池,然后说了自定义线程池的一些参数
13. 最大线程数和核心线程数有什么区别
最大线程数:运行创建的最多线程数量,多了就放在阻塞队列里面等待
核心线程数:被回收之后,线程池中保留的线程数
14. 线程池的类型有哪些
说了在工作中主要使用自定义的线程池,忘记jdk中自带的线程池类型了,但是主要是在核心线程数,最大线程数和拒绝策略上面的区别
15. 怎么根据场景去选择不同的线程池参数,怎么去配置的
主要说了根据业务场景来,是IO密集型还CPU密集型,但是之前项目中主要还是设置核心线程数,最大线程数都为10左右,已经符合了业务需求。
16. 有做过GC调优吗
说了线上环境没做过,但是本地自己玩过。主要是调一些堆内存的大小等。
17. GC了解过吗
说了 主要发生在堆,然后说了分代垃圾收集机制,堆中的内存结构,一个对象从eden到老年代的过程,GC算法,fullgc,以及回收是会使用户线程停顿
18. 怎么减少STW的时间
说了使用高效的垃圾收集器,比如CMS,进行一些并发的收集过程
19. 在编码中可以注意什么减少STW时间
说了一些复杂的业务,避免创建过多的临时对象。以及在使用IO资源时,及时释放,避免内存泄漏,最终导致内存溢出。
20. python有用过吗
说简单用过写脚本,项目中的自动化打包流程的自动化脚本就是通过python来写的,然后讲了下这个流程。
21. 简历上涉及到vue,前端有了解过吗
会写一些简单的后台页面
22. 反问
总的来说这次面试还是挺有收获的,面试官也会去引导,面试涉及到的八股文也还行
2. 用英文介绍一下最近的一个项目
3. 说说数据库中的索引
说了索引概念,底层数据结构,然后说了索引的类型,说了可能会失效,然后面试官问失效的场景
4. 说说索引失效的场景
说了最左匹配原则,like, 函数,范围查询 然后面试官说还有一些其他简单的场景可以去了解下
5. 有没有处理过慢sql的问题
说了处理线上场景的案例,如何使用explain关键字进行分析慢sql的问题,以及如何保证索引的充分使用,避免使用select * 等,然后也要考虑业务是否可以减少没必要的sql查询,减少连表。
6. 消息队列有了解过Kafka吗和RocketMQ有区别?
说了都是高可用,高性能,高扩展性的消息队列,然后RocketMQ是在Kafka的基础上进行了架构的减少,功能的增加。架构的减少主要体现了摈弃了Zookeeper作为分布式配置集群,功能的增加,主要体现在RocketMQ增加了延迟队列,事务消息,消息过滤等。然后说了kafka主要用于大数据场景,RocketMQ有更多的功能。
7. 怎么避免重复触发和消息丢失
说了重复触发主要是通过token验证的机制,在消费的时候,去对比token是否一致,不一致就丢弃。
将接口设置则幂等的
消息丢失主要是通过消息确认机制,消费完后发生ack确认,然后重发
8. 怎么探测到客户端是否有收到消息
过消息确认机制,消费完后发生ack确认
9. 多个消息,保证消息的有序执行
说了没做过这方面的业务,但是猜想可以将提前到的消息缓存起来,然后通过一些滑动窗口的机制,保证有序性。然后面试官说基本思想正确,回头可以去了解写。
10. 简历中有写处理高并发的场景,说说
说了主要是在多个线程下去处理共享资源造成的问题。针对接口的场景,说了每天接口有300w次请求,发现有时出现数据问题,后面通过分布式锁的机制去分开同一个用户的并发请求。
11. 如果是在同一个应用里面,线程之间怎么解决
说了使用一些本地锁,比如sychronized,reententlock,乐观锁,CAS等。
12. 有用过线程池吗
说了用异步comptablefuture,就使用了线程池,然后说了自定义线程池的一些参数
13. 最大线程数和核心线程数有什么区别
最大线程数:运行创建的最多线程数量,多了就放在阻塞队列里面等待
核心线程数:被回收之后,线程池中保留的线程数
14. 线程池的类型有哪些
说了在工作中主要使用自定义的线程池,忘记jdk中自带的线程池类型了,但是主要是在核心线程数,最大线程数和拒绝策略上面的区别
15. 怎么根据场景去选择不同的线程池参数,怎么去配置的
主要说了根据业务场景来,是IO密集型还CPU密集型,但是之前项目中主要还是设置核心线程数,最大线程数都为10左右,已经符合了业务需求。
16. 有做过GC调优吗
说了线上环境没做过,但是本地自己玩过。主要是调一些堆内存的大小等。
17. GC了解过吗
说了 主要发生在堆,然后说了分代垃圾收集机制,堆中的内存结构,一个对象从eden到老年代的过程,GC算法,fullgc,以及回收是会使用户线程停顿
18. 怎么减少STW的时间
说了使用高效的垃圾收集器,比如CMS,进行一些并发的收集过程
19. 在编码中可以注意什么减少STW时间
说了一些复杂的业务,避免创建过多的临时对象。以及在使用IO资源时,及时释放,避免内存泄漏,最终导致内存溢出。
20. python有用过吗
说简单用过写脚本,项目中的自动化打包流程的自动化脚本就是通过python来写的,然后讲了下这个流程。
21. 简历上涉及到vue,前端有了解过吗
会写一些简单的后台页面
22. 反问
总的来说这次面试还是挺有收获的,面试官也会去引导,面试涉及到的八股文也还行
全部评论
相关推荐
11-26 09:40
莆田学院 产品经理 点赞 评论 收藏
分享