百度面经vol.1

  1. List 中存有50个商品,给一个targetId 从中找出Id相同的删除

  2. 用过concurrentHashmap吗,为什么是线程安全的?
    jdk1.7特点
    jdk1.8特点
    concurrentHashmap两个版本的区别

  3. hashmap中的key和value会被GC回收吗?
    HashMap与垃圾回收

  4. jdk1.8了解lambda吗?
    Lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)

  5. 如果我对一个类做编译,他其中的lambda表达式会变成什么?
    虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。

  6. 说一下联合索引
    联合索引

  7. 一个字符串要求:1. 去掉收尾的空格;2. 若单词之间相隔一个空格跳过,若是相隔多个空格,合并成一个空格,不能用额外的存储,最好只遍历一遍

  8. 知道MTU是什么吗
    数据链路层结构
    为什么是1500字节

  9. 如果数据帧长度超过设置会发生什么
    数据链路层结构

  10. 知道JDK8是什么垃圾回收器吗?
    添加链接描述
    UseParallelGC 即 Parallel Scavenge + Parallel Old,再查看详细信息
    百度面经vol.1
    Parallel Scavenge:追求 CPU 吞吐量,能够在较短时间内完成指定任务,因此适合没有交互的后台计算。
    ParNew:追求降低用户停顿时间,适合交互式应用。
    Parallel Scavenge收集器的老年代版,使用多线程与标记–整理算法。这个收集器在jdk1.6中才开始提供的,直到Parallel Old 收集器出现后,“吞吐量优先”收集器终于有了比较名副其实的应用组合,在注重吞吐量以及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加 Parallel Old收集器(之前是serial old)

  11. 知道CMS什么意思吗
    CMS:获取最短回收停顿时间为目标的
    CMS 的缺点:吞吐量低;无法处理浮动垃圾,导致频繁 Full GC;使用“标记-清除”算法产生碎片空间。
    对于产生碎片空间的问题,可以通过开启
    -XX:+UseCMSCompactAtFullCollection,在每次 Full GC 完成后都会进行一次内存压缩整理,将零散在各处的对象整理到一块。设置参数 -XX:CMSFullGCsBeforeCompaction告诉 CMS,经过了 N 次 Full GC 之后再进行一次内存整理。

  12. 说一下Java的泛型
    泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型

  13. 泛型有哪几种
    添加链接描述

  14. 说一下多态
    多态的理解(多态的实现方式)
    方法重载(overload):实现的是编译时的多态性(也称为前绑定)。
    方法重写(override):实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西。
    要实现多态需要做两件事:
    方法重写(子类继承父类并重写父类中已有的或抽象的方法);
    对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)

  15. 写一下链表的反转

  16. SpringBoot的启动流程知道吗?
    添加链接描述

  17. Redis单线程的优势?
    添加链接描述

  18. 说一下线程池

  19. 如何创建一个线程池
    线程池之ThreadPoolExecutor概述
    线程池之ThreadPoolExecutor使用

  20. 为什么不推荐Excutors
    添加链接描述