刚面完字节、网易、阿里,整理三天整理出来的面经!

自我情况介绍:

本科阶段:人在双非,问就是混

当前宁波某软院渣硕,去年7月份开始Java的学习,道阻且长

当前面试情况:腾讯(一面挂)、美团(二面挂)、网易严选(oc)、杭州字节lark(口头offer)、阿里新零售业务平台(oc)、滴滴交易平台(HR面)

面筋总结:

因为并不是每家都有做录音,忘了一些面试问题。我就贴一下我面过比较普适性的问题。

此外, 我只是做一点些关键词的提示,具体达到面试要求需要自己去详细的理解和掌握

一些面试问题,我在自己的Java技术交流:1067382554有解答。欢迎前辈斧正

再PS : 因为是字节fans,所以对字节的面经下了点功夫

JVM:

  1. 【高频】Java内存区域 :

{ 程序计数器 , 虚拟机栈 ,本地方法栈 , 堆 ,方法区 ,元空间 } // 每个区域要能介绍一下

  1. Minor GC 触发条件 : eden区剩余内存是否足够 两种情况分开分析

FULL GC 触发条件 : Minor GC 平均晋升空间大小 > 老年代连续剩余空间,则触发FULL GC

  1. 【高频】 判断对象死亡的方法 : { 引用计数法 ,可达分析算法 }

深入一些,:GC root对象有哪些?为什么选择他们做GC root对象

  1. 垃圾收集算法 : { 标记清除算法 、标记整理算法 、 复制算法、 分代收集算法 }

深入一些: 各个算法的优点和适用场景

  1. 垃圾收集器 : { serial  、 parallel 、 CMS 、 G1  }
    

CMS 、G1 重点 , 介绍工作流程和优缺点

  1. 内存泄漏

例子: { 单例 , 容器 等等}

原因 : 长生命周期持有短生命周期引用

  1. 引用类型 ; {  强引用、 软引用、 弱引用 、 虚引用  }
    
  2. 【高频】 类加载过程 : { 加载 , 连接 , 初始化 }

有哪些类加载器 , 能否自定义 Java.Object.String 的类加载器 ?

  1. 【高频】 双亲委派机制 介绍 & 作用

Java :

  1. ArrayList 和 LinkedList 的区别

  2. HashMap & ConcurrentHashMap 的比较 : 线程安全问题等等

深入一些 : HashMap 为什么线程不安全? 能否举例 = { 并发resize()触发闭环结构 ,覆盖put操作 }

  1. 【高频】 HashMap 的 相关问题 // HashMap系列需要通过关键源码理解,比较重要

为什么 HashMap的size 为 2的幂次方 ?

HashMap resize()过程能否介绍 ?

HashMap效率受什么影响 (负载因子、hash数组size)?

HashMap中扰动函数的作用 ?

  1. Hashtable 和 HashMap的区别 : { 底层数据结构 (JDK1.8后不同)、父类不同  、扩容方法不同 、 线程上锁范围不同(重点) }
    
  2. equals 和 == 区别
    

为啥重写equals要重写hashCode()
hash值相等,而两个对象不一定equals

6 . 【高频】 String StringBuffer StringBuilder 区别 和各自使用场景

深入一些 : String 是如何实现它不可变的? 为什么要设置String为不可变对象 ? (字节一面这个问题给我问懵了)

  1. 接口和抽象类区别 
    
  2. 重写和重载的区别 
    
  3. 深拷贝和浅拷贝区别

  4. Java三大特性 
    
  5. Object的方法 : { finalize 、 clone、 getClass 、 equals 、 hashCode }
    
  6. 【高频】 设计模式 : { 单例模式 、 工厂模式 、 装饰者模式 、 代理模式 、 策略模式 等等} (此处我的掌握也不是很好)

深入一些 : 单例模式为什么采用双检测机制 ? 单例为什么用Volatile修饰? 装饰模式和代理模式区别?

并发 :

  1. 线程的状态 : { new ,runnalbe , wait , time-wait , block , terminated }
    
  2. 进程 、 线程 、 协程 的含义和区别 // 个人理解 是一组渐进提出的概念

  3. 进程间通信方式 : { 管道 、FIFO 、 信号量 、 共享内存 、 消息队列 、 Socket }

  4. 如何避免死锁 ? 死锁的四个必要条件 
    
  5. Sleep和wait的区别 
    
  6. 【高频】Sychronized 和 lock 的区别 ?
    
  7. Sychronized的底层优化 : { 无锁、偏向锁、轻量级锁 、重量级锁 }

  8.  volatile的作用 : { 指令重拍 、 保证变量的可见性(设计JMM)} 
    
  9. ThreadLocal 底层原理
    
  10. 【高频】 线程池

线程池构造器涉及哪些参数 : { corePoolSize , maximumPoolSzie , timeout , timeUnit , RejectHandler , 等待队列 , 线程工厂 }
介绍线程池工作过程?
线程池拒绝策略那些?
适用Executor创建线程池的弊端?
11. AQS 框架原理和 源码理解

操作系统(相对较少):

  1. 用户态和内核态的区别
    
  2. fork()作用
    
  3. Select poll epoll的区别
    
  4. 虚拟内存作用? 内存分页的作用?
    
  5. 缺页异常的介绍 
    

6 . OOM问题和 StackOverFlow的区别

MySQL:(对redis 需要学习 , 个人理解不深不多介绍) // MySQL比较重要

  1. 【高频】MyISAM 和 InnoDB的区别    : {是否支持行锁 、 是否支持十五 、 是否支持 MVCC 、 底层索引结构不同 }
    
  2. 事务特性ACID
    

深入一些 : 为什么要有一致性 ? AID不是已经保证了一致性了吗 ?

  1. 并发事务带来的问题 : {    脏读 、 修改丢失 、 不可重复读 、 幻影读    }
    
  2. 【高频】事务的隔离级别

5 【高频】 MVCC机制

6 . 【高频】索引
为什么索引使用B+树结构,而不是B树
为什么索引使用B+树结构,而不是红黑树 : { 磁盘预读取 、红黑树高度 }

  1. 聚簇索引和非聚簇索引区别? 主键索引和二级索引了解吗?

8 . 为什么不对每个列创建索引呢?

9 【高频】SQL语句优化 ,SQL题目(字节要求撸代码)

  1. explain中 rows type key extra字段的含义?

  2. count(1) count(*) count(列值)的区别

猜你喜欢

转载自blog.csdn.net/weixin_47277170/article/details/106218908