2020年春招面试失败经验分享

428 阅读6分钟

欢迎大家关注 github.com/hsfxuebao/j… ,希望对大家有所帮助,要是觉得可以的话麻烦给点一下Star哈

玩吧(一面60min)20200318

  1. spring bean循环依赖是怎么解决的?
  2. 看过那些Jdk的源码,说一下多线程的参数,
  3. HashMap为什么都是2的倍数,扩容机制?在多线程下存在的问题?
  4. 线程的状态,中断是干什么的?

    线程中断机制

  5. JVM排查问题,CPU爆表,常用的排查问题命令,jps等
  6. 双亲委派模型,类加载机制
  7. 锁,各种锁,公平锁和非公平锁
  8. CAS问题,怎么实现安全的?

CAS有3个操作数:内存值V(可能被thread修改)、旧的预期值A(thread修改后打算回写时看的主存变量值)、要修改的新值B(当前thread操作后的值)。 当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层指令实现。

  1. redis慢查询,redis实现分布式锁,redis持久化机制 redis慢查询(内存,命令keys)
  2. mysql的B+树,日志binlog,undolog,redolog

log,undolog,redolog说明

  1. 多线程怎么回收已经用完的线程的?

线程池中的空余线程是如何被回收的

  1. 强引用、软引用、弱引用、虚引用使用场景
  2. 有一、二。。。。十等奖,每个奖的概率都是10%,在样本很大情况下,如何保证每种奖的中奖概率是10%(Random函数)
  3. 创建线程池几种方式?

创建线程池的4种方式

玩吧(二面50min)20200320可能挂了

  1. 进程和线程的区别

进程和线程的主要区别

  1. Float,Double浮点数在计算机是怎么存储的,比如100.2340001

浮点数在计算机中存储

  1. Float,Double是线程安全的吗?

java规范规定了对基本数据类型的操作必须是原子性的,但是long和double除外。现今的虚拟机都是把32位作为原子性操作。但是对于64位确没有,因此64位虚拟机操作long和double时,会出现两次写操作,这就造成了错位可能,因此在64位上操作共享的long和double时,必须实现同步操作。

  1. TCP/IP 结构和相关协议?
  1. volitate关键字,指令重排序的作用?
  2. LinkedHashMap与HashMap

    LinkedHasnMap原理

  3. NIO在不同操作系统是怎么实现的?
  4. 贪心算法和动态规划区别
  5. 字典树的常见,查找和删除
  6. 完全二叉树

若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1)的结点数都达到最大个数,第 h层所有的结点都连续集中在最左边,这就是完全二叉树。

  1. 设计一个秒杀系统

    秒杀系统

  2. 设计一个类似朋友圈的功能,表结构

    评论功能表结构

头条(一面80min 20200319挂)

  1. 8种数据类型,各自的字节数,分析int的取值范围
  2. 集合类,Collection,Map接口的实现类,越详细越好
  3. 锁,各种锁,synchronized(),括号里可以使字符串吗,实现机制是什么?

    synchronized机器实现原理
    synchronized锁字符串引发的坑

  4. 线上CPU过高,排查一下?

    CPU过高排查命令

  5. mysql的Innodb索引B+树,隔离级别
  6. mysql死锁是怎么解决的

锁机制
死锁发生与避免

  1. 算法,一个数组代表股票,[100,80,120,130,70,60,100,125],哪天买入那条卖出收益最大,(卖出肯定在卖出当天及之后);

思路1,新数组记录当前位置及之后的最大值,help=[130,130,130,130,125,125,125,125];思路2:可以求出序列两两之间的差值,然后开始累加,如果累加和为负数,说明这不是最佳适合的买入点,可以清零,从后继续开始,找到累加和的最大值,更新即可。

  1. 单例模式

总结:问的特别细,抓住一个你不清楚的点深挖

车主邦(一面30min)20200320

  1. 线程,进程
  2. 线程池创建方式,参数,运行机制
  3. HashMAP,TreeMap
  4. synchronized实现机制,监视器的原理?

synchronized机器实现原理

  1. Mysql的Innodb索引b+树,还有其他索引数据结构吗?

没有了,Memory引擎使用的是Hash索引

  1. B+树和B树区别
  2. Full GC,如何避免Full GC

增减年老代的内存,设置年轻代到年老代的阈值

米克世界(一面30min)20200320

  1. 反转链表
  2. ArrayList和Linkedlist区别
  3. 平衡二叉树
  4. 从扑克牌中抽取5张(没有大小王),判断5张牌是不是连续的?

size大小为13的数组,记录扑克牌数字出现的次数

  1. 算法:从1到n这n个整数的十进制表示中1出现的次数?

猿辅导(一面60min)20200324挂了

  1. Innodb索引B+树,联合索引,最左前缀原则,回表查询
  2. Lock实现原理,AQS原理,公平锁和非公平锁实现原理
  3. synchronized锁升级?
  4. 多线程参数,实现机制,怎么实现超过空闲时间将线程杀死
  5. 进程和线程区别
  6. 算法:字符串消除游戏
  7. 算法:二分查找

猿辅导(一面60min)20200324挂了

  1. 阻塞队列用在哪些场景,与同步队列区别
  2. 线程池状态
  3. FutureTask,CompletabeFuture?
  1. 阻塞队列有几种?
  2. OOM在哪些地方可以发生?
  3. 年轻代、年老代垃圾回收
  4. 复制,标记清除,标记整理
  5. 算法:将一颗二叉树转化成只有右子树节点的二叉树

跟谁学(一面50min)20200324

  1. FutureTask,多线程
  2. redis缓存,布隆过滤器
  3. 如何获取redis中hash所有的key

    hkeys key

  4. redis实时性要求比较高,可以使用同步机制,监视mysql变动,更新Redis缓存
  5. mysql的Innodb中B+树索引
  6. 为什么MyIsim使用B树索引
  7. 如何找到慢查询sql

    slow_query_log 默认是off关闭的,使用时,需要改为on 打开      

  slow_query_log_file 记录的是慢日志的记录文件

  long_query_time 默认是10S,每次执行的sql达到这个时长,就会被记录 8. 慢查询sql,怎么调整sql不是慢查询了