2020年5月社招java面试题总结

题目来源:阿里、美团、滴滴、快手、小米、拼多多、58同城、百度

一、集合框架

  • HashMap。 HashMap的长度为什么是2的n次方、底层数据结构、线程安全问题出在哪、扩容机制、为什么节点是8才转红黑树
  • ConcurrentHashMap。 底层原理、与HashTable区别、1.8有什么变化
  • ArrayList和LinkendList。 数据结构、有何优缺点、扩容
  • LinkendHashMap。 底层原理、实现一个线程安全并且可以设置过期时间的LRU
  • Queue。 优先队列、阻塞队列、实现一个线程安全的阻塞队列

二、多线程

  • 锁。synchronized底层原理、锁优化(自旋、锁消除、轻量级锁、偏向锁等)、锁膨胀的过程;reentrantlock底层原理、volatile作用以及禁止指令重排底层原理、aqs原理、什么是cas、公平锁和非公平锁实现;reentrantlock与synchronized区别;ThreadLocal内存泄漏
  • 线程池。 线程池有哪些参数、提交任务到线程池的过程(没有达到核心数就创建,否则加入队列,队列满了就判断最大线程数,没达到继续创建,否则拒绝策略)、拒绝策略有哪几种、在哪些场景用到过线程池以及参数是怎么设置的
  • 手写代码。写一个死锁、写一个多线程1+2+...+100

三、jvm

  • jvm内存结构
  • 垃圾收集过程、gc roots、什么时候触发young gc什么时候full gc
  • cms的垃圾收集过程
  • 对象进入老年代的几种方法
  • jvm调优
  • 类加载的过程、双亲委派机制、怎么打破双亲委派

三、Spring

  • ioc、aop原理
  • BeanFactory和FactoryBean区别
  • bean生命周期
  • 怎么解决循环依赖
  • aop动态代理jdk和cglib区别、cglib底层原理
  • spring用了哪些设计模式
  • DispatcherServlet工作流程

四、MySQL

  • 慢sql怎么优化
  • 数据存储结构为什么是B+树,而不是B-树、红黑树、AVL,为什么hashmap用红黑树不用B+树
  • 聚集索引和非聚集索引区别
  • 回表查询是怎么回事
  • order by与索引(数据量小在内存快速排序、数据量大在内存快排然后在磁盘归并排序)
  • 最左前缀原理
  • 事务默认的隔离级别、怎么实现的
  • 什么是mvcc,间隙锁
  • 分库分表、读写分离
  • 日志文件redo log、undo log、binlog,事务原理
  • 什么是index merge、index condition pushdown

五、Redis

  • 有哪些数据类型、每种数据类型的场景、string类型底层结构、zset类型跳表原理
  • 过期删除策略、缓存淘汰策略、LRUCache
  • AOF和RDB
  • 集群投票过程、gossip协议
  • 插槽、一致性哈希
  • pipeline原理
  • 缓存雪崩、穿透、什么是布隆过滤器、一致性
  • redis分布式锁有什么问题、zookeeper分布式锁为啥比较好、redis和zookeeper分别实现了cap中的哪两个

六、其他

  • 系统设计朋友圈 
  • 100个热度最高的短视频,怎么设计高并发排行榜系统,怎么设计每个时段更新的排行榜
  • 设计一个评论系统
  • 写一个字符串转double的方法,不能使用parseDouble()等方法。
  • 给一个二叉搜索树的先序遍历比如 [5,3,2,4,6,7],重构二叉搜索树。思路:第一个节点是根节点,小于根节点的属于左子树,大于根节点的在右子树。递归处理左右子树。
  • 给定一个非递减数组,查询一个目标值第一次出现的位置。比如数组[1,1,2,3,3,3,4,5],查找3第一次出现的位置。思路:二分查找,若mid的值等于目标值,则判断mid-1位置的值是否也等于目标值,若等于则继续进行左边的二分查找。
  • 整型数组先递增后递减,找出最大值 [1 2 3 5 9 6 3 1]。思路:二分查找,找到中间的一个值,若中间值大于左边小于右边,继续在右边二分查找;若中间值小于左边大于右边,在左边查找。
  • 请设计一个算法完成两个超长正整数的加法。
  • 合并两个递增链表,合并k个递增链表
  • 升序数组求最小绝对值 [-9,-3,1,6,8,21,222]
  • 机器人mxn方格,每次只能往下或右走一步,有多少不同的路径
  • 设计一个先进先出队列,可以返回最大值
  • 在乱序的数组中找到第n大的元素。

你可能感兴趣的:(2020年5月社招java面试题总结)