Offer

面经汇总-社招-6年

​ 本文列出了别人面经各个重难点,还有自己不会的地方,暂时没学到的:Netty就跳过了

​ 感觉面试核心宝贵点都是在项目介绍,而不同人项目不一样,还是得多看别人项目,面经里面的非项目都只能算是基础或者中级知识。

参考链接:https://mp.weixin.qq.com/s/eqJ4mKdS69ADOCoB4035Fg

1.丰疆智能

  1. ArrayList 的扩容机制:
    初始化创建不会定义长度,第一次调用add定义为10,后续扩容为原来1.5倍

  2. HashMap 什么场景下是线程不安全的?会导致什么后果?
    jdk1.8之后put采用尾插法,多线程下数据会覆盖

  3. 当核心线程数未满,继续提交任务,是复用已经空闲的线程还是继续创建?
    继续创建,一方面是为了线程预热,核心线程个数本身就是配置好的最优值,另一方面复用之前线程是有争抢资源锁开销的。

  4. AQS 了解?里面都有哪些属性?AQS 有几种模式?你对 AQS 还有哪些理解?
    State,CLH。独占和共享(.........见尚硅谷-JUC-AQS篇)

  5. JVM 的内存模型?哪个区域不会发生 OOM?

在这里插入图片描述

2.西安移动研究院

  1. 包装类是深拷贝还是浅拷贝?
    深拷贝。深拷贝:复制一份全新过来。浅拷贝:只复制指针引用,修改后就改了原先的值,Integer包装类底层final int ,就是深拷贝

  2. Redis 的 key 删除策略?
    3种。定期删除(定时扫描),定时删除(过期时间到了就删除),惰性删除(不处理,用到了再判断是否删除)

  3. 写代码时常见的内存泄漏?

    1. 长生命周期引用修饰短生命周期引用:static 引用 = 局部变量
    2. 数据库、文件IO、socket连接后没有关闭断开
    3. set集合添加对象后又修改该对象属性再次添加(修改属性就是修改hashcode)后。重复添加后原对象hashcode变更,添加进去一个新的引用对象,就会造成内存泄漏(.......见尚硅谷-JVM-内存泄漏的8种情况)
  4. 线程 A 中创建线程 B,线程 B 如何捕获线程 A 的异常?

    1. 子线程中定义一个线程,设置setUncaughtExceptionHandler。(网上找代码实验即可)
  5. 有哪些让线程阻塞的方法?有哪些类使用了 LockSupport?(这个问题问的真的好)

    1. Object->wait,notify
    2. Condition->await,signal
    3. LockSupport->park,unpark。(AQS底层就是靠LockSupport阻塞线程,而AQS上层实现就是ReentreenLock.lock, Future.get, CompletableFuture.get等这些,它们底层代码都显式用到了LockSupport.park)
  6. 泛型中 Extends 和 Super 关键字的区别?在 put 操作多时用哪种,为什么?在 get 操作多时用哪种,为什么

    1. 是上界通配符,包含T和T子类,只能取数据,不能读
    2. 是下界通配符,包含T和T超类,只能存数据,不能取
  7. SpringBoot 自动装配原理?

    1. SpringBoot启动会自动加载各个配置类,然后按需加载组件(具体见尚硅谷-SpringBoot-自动装配,之前学习跳过了,后面学一下)

3.西安卓派

  1. Spring 中的 ApplicationEvent 使用过?
    1. 事件监听,由于暂时没用到就没学。(尚硅谷-Spring注解驱动有讲到)
  2. DDD 了解?是否知道其中的术语?
    1. domain-driven design领域驱动设计:就是把一个大型需求拆成一个个问题域,问题域下面拆成对象,然后考虑各个问题域之间的调用和协作。是相较于面向过程编程、面向对象编程的进化版参考链接:https://wenku.baidu.com/view/ea44f92393c69ec3d5bbfd0a79563c1ec4dad74e.html
  3. HTTP 协议的无状态你怎么理解?无状态有啥好处和坏处?
    1. HTTP协议就是无状态,指的是服务器不知道客户端状态,2次不同请求服务器,服务器认为2次请求没有任何关系。
    2. 相反,有状态就是cookie这种,好处当然就是节省资源,坏处就是服务器无法记录用户,可能会被恶意频繁请求攻击这种

4. 西安腾讯云

真不愧是腾讯啊,太难了。

  1. 谈谈什么是零拷贝?
    1. 减少CPU复制次数。kafka(kafka速度快原因之一:系统瓶颈是网络IO,而0拷贝就是减少内存拷贝次数)底层就是0拷贝。参考博客:https://blog.csdn.net/shenchaohao12321/article/details/115464117
    2. 感觉还是挺重要的,只学了个皮毛,后面专门出一章学习下。
  2. 一共有几种 IO 模型?NIO 和多路复用的区别?
    1. 后面再补一下,IO这一块确实太虚了。
    2. 参考链接:https://blog.csdn.net/lzb348110175/article/details/98941378
  3. TCP 怎么实现拥塞控制?怎么实现重传(说了思路不过具体的实现回答的不准确)?
    1. 慢开始,拥塞避免,快重传,快回复(难受啊,大学学的408都忘了好多了,做的笔记也不在了)
    2. 参考链接:https://blog.csdn.net/qq_46312987/article/details/124061775

5. 翼支付

  1. HashMap 如何减少 hash 碰撞;
    1. 线性探测法:一个地方冲突,就线性顺序往后找。ThreadLocal就是这种办法
    2. 链式寻址法:冲突的话就往链表后面加。HashMap, HashTable
    3. 再Hash:hash之后hash
    4. 公共溢出区:hash表分成基本表和溢出表,冲突元素放到溢出表中
  2. Redis 热 Key 如何解决
    1. 热Key就是多个请求访问Redis上同一个key,弄成集群方式
posted @ 2022-08-01 17:04  Empirefree  阅读(147)  评论(0编辑  收藏  举报