2021年面试

Posted by 月光下的海 on June 25, 2021

58一面

  • 自我介绍
  • 介绍下项目,流程,使用技术,技术难点(怎么解决的)
  • hashmap 是否线程安全?1.8和之前的区别,什么时候hashmap性能会下降,怎么解决?Hashmap扩容机制
  • concurrenhashmap是否安全?1.8和之前的区别?
  • 你们JVM用什么垃圾回收器?新生代和老年代用的什么回收器?
  • mysql索引怎么实现的?B+树和B树有什么区别?
  • 怎么排查redis性能下降?redis用什么数据结构?zset底层实现(跳跃表),跳跃表怎么实现的,时间复杂度是多少?
  • redis为什么快?是NIO的吗?NIO和BIO的区别?
  • redis持久化机制?rdb和aof哪个快?哪个准?
  • 怎么解决热key?怎么解决大Key?
  • 缓存击穿、缓存穿透、缓存雪崩是什么意思?分别怎么解决?
  • 布隆过滤器怎么实现的?
  • Google GuavaCache怎么用?有哪些参数?
  • 线程池的工作原理?有哪些参数,分别代表什么意思?
  • 消息队列使用场景?设置过哪些参数?怎么解决消息重复消费和消息顺序问题?
  • 用过哪些RPC框架?Dubbo有哪些组件?设置过哪些参数?
  • 线上怎么定位接口响应慢?实际项目中有没有遇到过?怎么解决的?说个例子
  • 限流算法有哪些?漏斗算法和令牌桶算法有哪些区别?令牌桶的原理?
  • 场景题: 现在有10台机器,系统QPS是7000,每台机器会用3个线程发请求,每个线程会串行调用3个redis命令。redis集群有4台,每个请求经过hash运算是会落到相同的redis机器上去的。 已知redis每次请求返回是3ms,保证整体请求在10ms内完成 问怎么设置线程池大小以及redis连接池大小?
  • 平常怎么学习、最近在看哪些书?

58二面

  • 怎么理解分布式和微服务?
  • MQ怎么用的?哪些场景?为什么不用普通的HTTP请求?
  • synchronized和Lock的区别?
  • 讲一下HashMap
  • Spring、SpringMVC、SpringBoot、SpringCloud怎么理解?有什么关系?
  • 网络通讯协议有哪些?最新的Http版本是多少?
  • redis集群部署方式?
  • JVM调过哪些垃圾回收器参数
  • 缓存(Guava Cache)、怎么自己实现一个Redis这种的缓存?(基于淘汰策略怎么设计)
  • SQL优化?什么是覆盖索引?

58三面

  • 说下Java常用的集合。ArrayList怎么扩容,LinkedList的区别?
  • Hashmap的实现原理,怎么扩容?是否线程安全?
  • ConcurrentHashMap怎么保证的线程安全?
  • redis集群
  • 线程池的参数?工作流程?阻塞队列的作用
  • 用过什么消息队列?说下应用的场景
  • 分库分表的思路
  • ES是否了解?简单说一下
  • redis常用的数据类型?用过哪些,说下使用场景
  • DDD

贝壳找房

  • 介绍下项目
  • Dubbo怎么做限流降级?SpringCloud怎么做的
  • Hytrix工作原理、机制
  • 项目的流程,遇到什么难题?怎么解决的
  • 线上问题是怎么定位的?最后发现是因为什么原因导致的

顺丰

  • HashMap的实现原理?HashMap和HashTable区别?
  • synchronize和lock的区别?
  • MySQL索引实现的原理
  • MVCC
  • SQL优化
  • 接口和抽象类的区别?
  • 常用到哪些设计模式?
  • 策略模式、优缺点?
  • 求两个单链表是否有交点,如果有求第一个交点
  • 项目中充当什么角色?
  • redis持久化机制?RDB和AOF的优缺点
  • 怎么设计一个秒杀系统?怎么防止超卖?减库存是在下单还是付款时扣减
  • Linux找出当前目录文件大小大于10k的,并将其移动到temp目录下

美团优选

  • 自我介绍
  • 介绍项目(项目流程、技术架构、遇到的问题)
  • Struts2执行流程,和SpringMVC的区别
  • MQ的使用场景、如何处理消息丢失问题?为什么要用RocketMQ(怎么做的技术选型),RocketMQ为什么快?
  • Redis使用场景、用的哪些数据类型?
  • 主线程中开启多个子线程执行任务,保证子线程执行完毕后再执行主线程的逻辑,如何实现?
  • 算法题目:合并两个有序的单链表(因为是牛客网视频面试,所以需要手写代码并运行)

美团地图

  • 自我介绍
  • 介绍下项目流程、使用技术、项目难点
  • 系统的上下游是谁?数据格式怎么统一?用什么存储?
  • SQL的优化
  • 单表数据量有多大?想问分库分表,因为后面有提到过。
  • 事务的隔离级别?分别有什么问题?每一种是解决了什么问题?MySQL默认的隔离级别?
  • MySQL的可重复读的实现原理

  • 笔试题
    • 写个单例模式
    • 反转从M-N区间内的单链表(时间复杂度O(N),空间复杂度O(1))
  • 由于单例模式用的是枚举。接着单例发问
    • 为什么用枚举?枚举怎么保证线程安全?枚举怎么避免序列化和反射?
    • 枚举类是什么时候被加载的?类加载的机制
    • 能不能写个别的实现?(写了DCL)synchronized关键字的作用?
    • Java中锁升级的过程
  • 平常看源码吗?都看哪些?
  • 有什么问题要问我

用友

  • 怎么排查线上问题?(具体步骤)
  • 项目介绍(流程、技术、遇到的问题及怎么解决的)
  • 就其中一个项目业务、技术实现细聊
  • 大数据量中如何判断某一个字符串是否重复

度小满(面试放弃)

阿里飞猪团队(面试放弃)

美团到店团队(面试放弃)

滴滴(面试放弃)

快手(面试放弃)

老虎证券(面试放弃)

总结

  • 从2019年到现在已经有两年的时间没有再出去面试过了,4月份趁着不太忙体验了一把。一方面看看行情,检验下自己这两年有没有成长,另外一个也算是技术交流了。 最后结果是58和用友通过。
    • 顺丰有点不太地道,找了个写PHP的人来面我,从面试题也看得出来像是拿着现成的题目和答案在念。加上对他们兴趣没那么大,还有就是面试过程中可能表现出了对他们加班比较排斥。未通过。
    • 贝壳没过的原因个人感觉是在回答关于项目中实际遇到的问题没有刨根问底,回答的他们不太满意。未通过。
    • 美团是6月份朋友刚好有机会内推的职位,前面几个都是4月份在Boss上联系的。因为算法题目写的不太行,中间有步骤没写完善。未通过。
    • 其中有几个面试放弃的大多都因为时间不合适。有的需要现场(因为是在职,所以前期要求现场面的都推掉了),有的是时间冲突。
    • 以上。