V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
young1lin
V2EX  ›  Java

Java 工作两年多,我面试过的题目

  •  
  •   young1lin · 2021-02-07 11:56:20 +08:00 · 10902 次点击
    这是一个创建于 1420 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以下下划线是我一定没遇到过的。其他的有些遇到过,有些有可能会遇到。内容有点多,更多的在 https://github.com/young1lin/notes/blob/master/Prepare%20for%20Interview/%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E7%AE%80%E5%8D%95%E6%B1%87%E6%80%BB.md

    HashSet 的底层实现说下?为什么内置 HashMap ?说下它的数据结构,为什么 loadFactor 是 0.75 ?为什么要高位参与与运算?为什么它的 size 是 2 的 n 次方?为什么默认是 16 ?讲下它的扩容机制。什么时候转红黑树,为什么要转红黑树?为什么它是线程不安全的,它的哪些方法是线程不安全的?为什么会造成死循环? 1.8 是如何解决这个问题的?它的线程安全的实现有什么? ConcurrentHashMap 和 HashTable 有什么区别?说下它 1.7 和 1.8 的实现是什么?有什么区别?为什么要这么做?为什么说 ConcurrentHashMap 是线程安全的?它的 get 操作是有锁的吗?它是强一致性的吗?它为什么是弱一致性的? ConcurrentHashMap 1.7 和 1.8 是如何扩容的?sizeCtl 参数是干什么的,讲讲变换过程?为什么要用 volatile 修饰?说说它的功能?什么是 MESI 协议? CPU 原语是什么?什么是可见性? JMM 说说是什么?为什么要有 JMM ? Happened-before 是什么?它和 synchronized 的区别是什么?锁的升级与降级说下是什么?偏向锁是什么? Mark-Wrod 说下?锁的粒度是什么?锁消除了解吗?锁会被合并吗?什么时候会发生?你刚才说了 CAS,你能说下它是什么东西吗?为什么要引入 CAS ? ABA 问题是如何解决的? AQS 了解吗?它是如何实现的? CLH 又是什么? ReentrantLock 和 synchronized 区别是什么?为什么 ReetrantLock 能实现公平锁?默认构造器是公平锁吗?为什么不是? Copy-on-Write 了解吗? Fork/Join 又是什么?什么是线程,什么是协程?你刚才说了管程?你能说下这几个到底是做什么的吗?线程池说下参数,四种内置的拒绝策略,以及它的执行流程。你用过吗?为什么要这么设置参数? I/O 密集型应用和计算密集型应用如何设置其参数?你具体的业务线程池的参数是怎么设计的?为什么?测过吗?你定制化开发过吗?线程池预留了 3 个供子类扩展的方法你知道是哪三个吗?能做什么你知道吗? ThreadLocal 是什么?它为什么会造成内存泄漏?你实际开发中用到过吗? Spring 事务用这个干什么的?什么是事务的 SavePoint ?你知道死锁吗?如何解决死锁? sleep 和 wait 的区别是什么? BIO 、NIO 、AIO 是什么?说下区别,以及如何使用?了解 Netty 吗?如何解决粘包问题? ChannelPipeline 又是什么? ByteBuf 知道吗?读写指针又是什么?它和 mina 的区别是什么?它的 Zero-Copy ?了解过 FastThreadLocal 吗?它为什么比 ThreadLocal 快?有看过其中源码吗? Netty 解决了 NIO 类库的什么问题?空轮询又是什么? RPC 又是什么?序列化和反序列化又是什么?几个核心类说下。是干什么的?

    你说你了解虚拟机,你知道虚拟机的运行时数据区吗?哪些是线程共享的,哪些是线程独有的?你了解 JVM 调优吗?调优过吗?为什么要这么设置?垃圾回收算法有几种?为什么要分代收集? Young 区说说它的分布结构,为什么 Eden 区 80%?为什么大对象直接进入老年代?控制的参数是什么?一个对象如果不是大对象,怎样才能进入老年代?控制的参数是什么?什么时候会发生 OOM ?你遇到过吗?怎么解决的?为什么低版本的 JDK 要把永久代内存调大点?默认大小是多少你知道吗?什么是 Major GC,什么是 Minor GC ?什么情况下会频繁 GC ?你查看过 GC 日志吗?什么时候回收对象?引用计数和可达性分析是什么?为什么 Java 使用后者? Python 使用前者?什么是 GCRoot ?什么时候对象不可达? Java 的四种引用说下,分别用在什么场景?你知道 JDK 源码哪里有用到 WeakReference 吗?什么是 STW ?什么是 Safepoint ?类加载的过程说下,什么时候优化,以及不同的时候的主要优化是什么?解语法糖是什么时候?为什么在编译的时候解语法糖?什么是双亲委派模型?可以破坏吗?各个 ClassLoader 加载哪部分类的?你自定义过 ClassLoader 吗?你说你用过 Jstack 诊断 CPU 使用率飙升的情况,说下具体步骤? Arthas 用过吗? Class 文件格式说下,什么是魔数,Class 文件的魔数是什么? JMX 了解吗?

    ACID 说下是什么。你说你优化过 SQL,怎么优化的说下。like '%xx%',like '%xx',like 'xx%' 哪种情况会用到索引?说下 MySQL 执行流程。WAL(Write-Ahead Logging) 知道吗? redo log 和 undo log 是什么,它们作用说下。你说你改过 buffer_pool_size 等参数,为什么要改它?它里面的数据结构说下是什么?为什么冷热 3:7 ? join_buffer 你说你也改了,为什么?什么是驱动表和被驱动表?如何优化?你说你建了索引,什么是蔟集索引,什么是非蔟集索引?什么是回表?什么时候会索引失效?你的二级索引什么用得多?为什么优先使用普通索引,而不是唯一索引? MySQL 会死锁吗?什么是间隙锁?它会导致什么问题? MVCC 说下是什么? 4 种事务说下是什么?哪种或者哪几种事务隔离级别能避免幻读?能避免脏读?你说你还开启了 binlog,能说说是什么吗? canal 用过吗?说说它的原理。MySQL 主从模式如何开启?你是如何优化 SQL 的?上亿级别的数据你是如何优化分页的?为什么不建议在 MySQL 中使用分区机制?为什么删了数据还是磁盘空间不变?自增主键用完了会怎么样?如何解决这个问题?自增主键什么时候是不连续的?这样做的好处是什么?为什么推荐用自增主键? B+ Tree 又是什么?如何迁移数据库?为什么不建议使用外键?在高版本的 MySQL 中 count(1) 和 count(*) 区别是什么? order by 是如何工作的?分页机制又是什么? ACL 和 RBAC 是什么? grant 之后一定要刷新吗?视图用过吗?它的作用说下。视图和表的区别说下。存储过程写过吗?存储函数和存储过程的区别说下。NoSQL 用过吗? OceanBase 了解吗? HBase 了解吗?<u>HBase 有哪些坑,你碰到过吗?什么是 RegionServer ?</u>什么时候用 NoSQL,它能取代 RDBMS 吗?你说你用过 Elasticsearch,能说下它的请求执行过程吗?它的总体架构说下。它的插件你用过吗?你们的分词策略是什么?倒排索引说下是什么。

    给二叉树后序和中序遍历,写前序遍历。手写个快排。翻转一下链表。O ( 1 )找出链表有环。DFS 找出二叉树搜索树第 k 大节点。

    实现一个多线程类,并用该线程类实例化 3 个线程 A,B,C ; A 线程打印字符 A,B 线程打印字符 B,C 线程打印字符 C ;启动这 3 个线程,要求启动线程的顺序为 C 线程->B 线程->A 线程,并且最后输出内容为:A B C 。禁止使用 sleep 函数。阿里应该还有各种多线程打印的问题,这个得准备。

    接下来应该是更高级的算法题目,至少是 LeetCode Menium 难度的,翻转链表确实有点初级,练个半个小时就搞定了。暂时还没碰到,碰到我也挂了。

    你平时是怎么学习一门新技术的?

    最近有看书吗?看的什么书?能和我讲讲吗?

    你为什么离职?下一家公司的期望是什么?期望薪资?

    83 条回复    2021-03-12 21:13:43 +08:00
    xlui
        1
    xlui  
       2021-02-07 12:39:51 +08:00 via Android   ❤️ 3
    这排版,绝了
    young1lin
        2
    young1lin  
    OP
       2021-02-07 13:14:08 +08:00
    @xlui 这个 V2EX 格式的问题,而且算是连环的问题,不是一个一行的问。Github 上就不一样
    zyzdxb
        3
    zyzdxb  
       2021-02-07 13:57:16 +08:00
    @young1lin github 点进去也是一样的排版啊
    overthemoon
        4
    overthemoon  
       2021-02-07 14:26:41 +08:00   ❤️ 5
    楼主文字排版是别有用心的,很符合八股文特征
    AkideLiu
        5
    AkideLiu  
       2021-02-07 14:29:52 +08:00   ❤️ 14
    CS 慢慢变成文科了
    yamasa
        6
    yamasa  
       2021-02-07 14:50:38 +08:00
    挺好 马克下。
    aguesuka
        7
    aguesuka  
       2021-02-07 15:03:21 +08:00 via Android   ❤️ 26
    楼主楼主,面试有没有遇到"markdown"怎么换行啊?
    PonysDad
        8
    PonysDad  
       2021-02-07 15:06:10 +08:00
    @aguesuka 哈哈哈哈哈哈
    liprais
        9
    liprais  
       2021-02-07 15:10:54 +08:00
    就 ACID 就不是一般面试官能懂的东西了
    hehe12980
        10
    hehe12980  
       2021-02-07 15:51:01 +08:00
    现在特么 JVM G1 默认就是最优设置, 基本不需要调参数,天天背 JVM 参数,累不累
    yeqizhang
        11
    yeqizhang  
       2021-02-07 15:56:20 +08:00 via Android
    为什么内置 HashMap ?
    reasonsyh
        12
    reasonsyh  
       2021-02-07 15:57:20 +08:00
    两年就问这么多了吗?
    hehe12980
        13
    hehe12980  
       2021-02-07 16:01:48 +08:00
    @yeqizhang HashSet 的目的就是为了放入容器的元素不重复,解决集合容器去重的问题,HashMap 的 key 刚好满足,所以 HashSet 的底层其实还是 HashMap, 只不过 value 给放入了一个固定 Object,其实这么干吧,行也行,还是写底层那一拨人偷懒了,因为 value 还是占内存的
    efaun
        14
    efaun  
       2021-02-07 16:02:22 +08:00
    @xlui #1 很符合面试夺命连环 call 的感觉了
    chocovon
        15
    chocovon  
       2021-02-07 16:03:48 +08:00   ❤️ 6
    别念了,师傅,别念了
    fallinlovewith
        16
    fallinlovewith  
       2021-02-07 16:09:20 +08:00 via Android
    收手吧,up 祖,外面都是成龙。
    UBcai
        17
    UBcai  
       2021-02-07 16:12:58 +08:00   ❤️ 1
    工作 2 年多,意思 1 年多都要懂这些了么?太可怕了吧
    yazinnnn
        18
    yazinnnn  
       2021-02-07 16:14:12 +08:00
    java 怎么实现一个自定义重复规律的 hashSet?
    gadsavesme
        19
    gadsavesme  
       2021-02-07 16:31:06 +08:00
    大概扫了一眼,都是些挺常规的八股文,平常一直都有在看的表示如果真面这些还是挺舒适的,如果平常看的不多的估计得尿遁。
    jj783850915
        20
    jj783850915  
       2021-02-07 16:33:20 +08:00 via Android
    经典八股文
    yamasa
        21
    yamasa  
       2021-02-07 16:42:56 +08:00   ❤️ 2
    @UBcai 现在 Java 卷的难以想象,他这个列表里的这些题不算难的。还有些两三年分布式框架源码级别往死里问的
    jasonkayzk
        22
    jasonkayzk  
       2021-02-07 16:43:22 +08:00
    可以说是非常的八股文了!
    zhenglinsmile
        23
    zhenglinsmile  
       2021-02-07 16:50:17 +08:00
    这种看多了 我都不敢产生跳槽的想法
    zifangsky
        24
    zifangsky  
       2021-02-07 17:09:22 +08:00
    差不多,是现在 Java 面试的常问问题,不过楼主这个排版实在太糟糕了
    omri
        25
    omri  
       2021-02-07 17:13:45 +08:00   ❤️ 2
    我倒是觉得这个排版很好啊,很有那种窒息感!
    HarryQu
        26
    HarryQu  
       2021-02-07 17:42:05 +08:00
    排版很不错,给人一种压迫感,哈哈。
    ALVC666
        27
    ALVC666  
       2021-02-07 17:45:32 +08:00
    @omri 窒息感哈哈哈
    cllvking
        28
    cllvking  
       2021-02-07 17:50:06 +08:00
    面向八股文编程
    Takamine
        29
    Takamine  
       2021-02-07 18:10:20 +08:00 via Android
    真实。_(:з」∠)_
    wapzjn
        30
    wapzjn  
       2021-02-07 18:13:03 +08:00
    我靠,我建议加入 markdown 的<br>
    redtea
        31
    redtea  
       2021-02-07 18:32:45 +08:00
    你的方案底层逻辑是什么?顶层设计在哪里?最终交付价值是什么?过程的抓手在哪里?如何保证结果的闭环?你比别人的方案亮点在哪?优势在哪?我没有看到你的沉淀和思考,你有形成自己的方法论吗?你得让别人清楚,凭什么客户选的方案是你的,换别人不一样吗?

    脉脉上看到的。
    cvbnt
        32
    cvbnt  
       2021-02-07 18:44:39 +08:00 via Android
    这个排版不能说好,可以说是棒极了,满屏的问号像极了刺客信条游戏里的地图,生动形象的体现了当前 java 面试一堆八股文的情况
    yeqizhang
        33
    yeqizhang  
       2021-02-07 18:47:34 +08:00 via Android
    @hehe12980 我 tm 以为 java 为什么内置 hashmap,感觉这问题也太……看了两遍你的回答我才知道问的是 hashset 为什么用 hashmap 实现
    yeqizhang
        34
    yeqizhang  
       2021-02-07 18:48:25 +08:00 via Android
    @redtea 兄弟你产品经理走错片场了吧
    superBearL
        35
    superBearL  
       2021-02-07 18:50:47 +08:00
    这排版...至少标个序号嘛
    Helsing
        36
    Helsing  
       2021-02-07 18:57:36 +08:00 via iPhone
    令人窒息
    drackzy
        37
    drackzy  
       2021-02-07 19:14:41 +08:00
    太卷了
    chen11
        38
    chen11  
       2021-02-07 19:17:58 +08:00
    。。我裂开了,好多问题啊。最近在学 java,se 学完了,ee 开始
    Lemeng
        39
    Lemeng  
       2021-02-07 19:38:42 +08:00
    排班简直让人窒息,不过还是感谢分享
    liupeng2579793
        40
    liupeng2579793  
       2021-02-07 19:52:03 +08:00
    没有 Spring,Springmvc,Spring boot,Redis,RocketMq,rabbitMq 相关的,你面的是假的吧
    young1lin
        41
    young1lin  
    OP
       2021-02-07 21:11:43 +08:00
    @liupeng2579793 这是一部分,全部的在 Github 上面,Spring MVC 的我忘写了
    young1lin
        42
    young1lin  
    OP
       2021-02-07 21:14:22 +08:00
    @aguesuka 我都说了,这是一块的问题,放到一块,如果是一个问题换一行,那这个就很长了
    lifetimeporn
        43
    lifetimeporn  
       2021-02-07 21:25:53 +08:00 via iPhone
    要开始爱上八股文,这样才能跳槽
    ArJun
        44
    ArJun  
       2021-02-07 21:29:08 +08:00
    没觉得排版问题,问题是现在的 Java 面试就是这样,很臃肿,一堆什么乱七八糟的问题都问
    young1lin
        45
    young1lin  
    OP
       2021-02-07 21:45:08 +08:00
    @yamasa 这还是基础的,太变态我还没写呢,真的离谱,我工作一年多的时候问我 Spring Bean 生命周期。V2ex 发不了,太多了,只能给 Github 链接了
    Auster
        46
    Auster  
       2021-02-07 22:12:40 +08:00
    像极了 A 厂的一二面。。。
    redford42
        47
    redford42  
       2021-02-08 00:10:05 +08:00
    尊重一下面试官,背下八股文
    shmilypeter
        48
    shmilypeter  
       2021-02-08 01:03:09 +08:00
    你录音了吧,要不然不可能记得住那么多。

    真是 CS 学成文科了
    geekaven
        49
    geekaven  
       2021-02-08 01:13:15 +08:00
    普通小厂也是这样吗?有点吓人
    Jooooooooo
        50
    Jooooooooo  
       2021-02-08 01:14:46 +08:00   ❤️ 1
    第一大段给楼主筛选下稍微有价值的题目, 如果不知道答案最好搜一搜

    1. 讲下 hashmap 的扩容机制, 为什么要转红黑树?
    2. 为什么 hashmap 会造成死循环?
    3. ConcurrentHashMap 是怎么做到线程安全的?
    4. volatile 的功能?
    5. Happened-before 是什么?
    6. CAS 是什么?
    7. 说下 AQS 的原理?
    8. java 中的线程怎么对应到操作系统上?
    9. 具体的业务线程池的参数会考虑哪些因素?
    10. NIO 的优势具体体现在哪?

    (真要讲一句, 就算整理过这些题目质量也够低的. 可能真正有价值的是第九题. 没真的搞过的人一般答不好, 算是一个符合 star 原则的题目
    young1lin
        51
    young1lin  
    OP
       2021-02-08 01:33:43 +08:00
    @shmilypeter 面多了,习惯了
    young1lin
        52
    young1lin  
    OP
       2021-02-08 01:34:00 +08:00
    @geekaven 小厂应该抽几道题目吧
    young1lin
        53
    young1lin  
    OP
       2021-02-08 01:36:52 +08:00
    @Jooooooooo 放心,都会问的,尤其是大厂,或者是大厂出来创业的人。上来给我八股文过招,哼,不过如此。线程池必问。NIO 、AIO 、BIO 必问,放心,会问到你不会为止。

    这些只是最基本的,还有更多的内容在我的 Github 上面的,还有问我异常处理如何做的?我讲了 《 Effective Java 》的做法,以及 Spring 的 nested Exception 那种做法。
    young1lin
        54
    young1lin  
    OP
       2021-02-08 01:38:40 +08:00
    @drackzy 就是这么卷,Java 是最卷的语言,这个不过分吧?
    lewis89
        55
    lewis89  
       2021-02-08 03:51:48 +08:00
    @Jooooooooo #50

    具体考虑哪些参数? 除开那个 stealworking 的线程池

    其余的线程池只能设置核心线程数 跟 Queue 的具体实现 以及最大线程池数?

    设置的话,一般都是按经验来,然后最好是有线程池监控,美团也是这么做的?

    而且也要看是 IO 密集型还是计算密集型,计算密集型 妥妥的跟核心数量一致就行了 频繁的切换没有必要,也浪费 CPU 时间?

    如果 IO 密集型,没得说,把下游的 硬盘 网络 IO 往死里搞,打满 80%为止..?
    lewis89
        56
    lewis89  
       2021-02-08 03:54:19 +08:00
    @liprais #9

    如果只是说概念的话,ACID 倒还是好说 ,要说实现细节,光是 MySQL 引擎实现 C 的细节, 刷写脏页 以及 undolog 的格式 细节上来 可以问上半天.. 然后顺带问下 binlog 格式 以及主从同步..

    没办法就是这么卷
    lewis89
        57
    lewis89  
       2021-02-08 03:57:35 +08:00
    @hehe12980 #10 可能面试官想了解你对 GC 算法的理解吧,其实就我而言,我也不会去背那些参数,因为大部分能调的几个参数无非是在吞吐量跟停顿时间 取得一个平衡,想要高吞吐量 那么就只能牺牲停顿时间,反之也是如此..

    包括 G1 的 XX:MaxGCPauseMillis 意义不大,你调低了,自然吞吐量上不去,调高了停顿时间就会多,这个还是要根据你线上的 JVM 实例的真实情况 来做决定
    ConradG
        58
    ConradG  
       2021-02-08 04:44:38 +08:00
    我比较在意那个 O(1)链表有环的算法。
    ming7435
        59
    ming7435  
       2021-02-08 08:30:04 +08:00
    这尼玛真的是吓人,工作 10 年+的人不敢出去面试,因为不会背八股文
    liupeng2579793
        60
    liupeng2579793  
       2021-02-08 10:16:10 +08:00
    五分之一都没啊,好兄弟
    MiracleShadow
        61
    MiracleShadow  
       2021-02-08 10:50:15 +08:00
    @ConradG 应该是指空间复杂度 O(1),快慢指针
    Jooooooooo
        62
    Jooooooooo  
       2021-02-08 12:19:14 +08:00
    @lewis89 差不多往 io 密集和 cpu 密集的方向答就差不多. 另外一个就是队列最好是有界的, 防止意外把内存撑爆.
    young1lin
        63
    young1lin  
    OP
       2021-02-08 12:56:20 +08:00
    @Jooooooooo 2n+1 读写、n+1 计算,n 为核心数,后面还会问你,为什么这么设置?有什么讲究吗?

    MySQL 不止问 undo log 、redo log,还会问蔟集索引,非蔟集索引,还有具体 SQL 优化,前面是基础。后面 MySQL 里面几个核心线程知道吗?说说它们的作用。MySQL 还不止问这些,我简历上写了调整了 MySQL 参数,buffer_pool_size 等,盯着我参数问,为什么要这么改?你还知道其他参数优化吗?

    刚面试个简单的,找 N 个数前 10 大的数,我说 PriorityQueue 维护个 10 容量的小顶堆,O(1) 空间复杂度,O(n) 时间复杂度,然后让我手画一下 Java 的 PriorityQueue 的插入和删除的具体过程。
    young1lin
        64
    young1lin  
    OP
       2021-02-08 12:56:51 +08:00
    @liupeng2579793 发不了,V2ex 发不了那么长的,要注册 600 天好像
    young1lin
        65
    young1lin  
    OP
       2021-02-08 13:04:52 +08:00
    @ConradG 链表的简单题目之一,只要你刷过,一般都知道,O(1) 空间复杂度,快慢指针,还有其他链表题目,哑节点,双指针,额外堆栈存储,暴力遍历。
    Jooooooooo
        66
    Jooooooooo  
       2021-02-08 13:06:14 +08:00
    @young1lin 2n+1 读写当然不是正确的, 得考虑 io 的速度. 考虑这种场景, 一次请求需要 1s 才能返回, QPS 预估单机是 100, 那么设置多少是更合理的呢?

    n+1 的计算也不是正确的, 考虑到操作系统也得用 cpu. 这个就看究竟做过多少实际调参了.
    java8
        67
    java8  
       2021-02-09 09:56:51 +08:00
    老哥们, 有整理好的八股文文章吗 发一下
    EscYezi
        68
    EscYezi  
       2021-02-09 14:44:02 +08:00 via iPhone
    能说一下楼主面的都是什么公司吗,打算年后去面试,有点被这帖子吓到了(工作一年半)
    a01200304
        69
    a01200304  
       2021-02-09 17:23:20 +08:00
    这就是硬卷啊
    young1lin
        70
    young1lin  
    OP
       2021-02-09 22:12:38 +08:00   ❤️ 1
    @EscYezi

    一线大厂:ali 系,DiDi 。

    二线大厂:H3C,大华,安恒,涂鸦智能等。

    次一点的厂:有数,兑吧,单创等等。

    还有更小的公司就比较多了。

    有些是做人工智能的,招 Java 但是要会大数据,想让我去做数仓。编程题,那个简单链表题目,主要是这个小公司出的。

    其实主要是 ali 系的,问得比较细,问到你不会为止,比如 HashMap 相关的可以问半个小时。DiDi 比较直接,不给你整八股文。

    千万 千万 千万别去外包,坑得要死。

    Zoom 其实也挺不错的,只不过没投。ByteDance 也在杭州有分部,算法练练,试试看。
    SkyLine7
        71
    SkyLine7  
       2021-02-19 11:12:27 +08:00
    两年面试我的面试官都不能把这些问题回答 80%
    young1lin
        72
    young1lin  
    OP
       2021-02-19 12:30:27 +08:00
    @SkyLine7 还好吧,我感觉面两年的面试官,应该最少工作 4 年,工作 4 年知道这些,不难。
    cmily54813
        73
    cmily54813  
       2021-02-23 16:16:03 +08:00   ❤️ 1
    HashSet 的底层实现说下?
    为什么内置 HashMap ?
    说下它的数据结构,为什么 loadFactor 是 0.75 ?
    为什么要高位参与与运算?
    为什么它的 size 是 2 的 n 次方?
    为什么默认是 16 ?
    讲下它的扩容机制。什么时候转红黑树,为什么要转红黑树?
    为什么它是线程不安全的,它的哪些方法是线程不安全的?
    为什么会造成死循环?
    1.8 是如何解决这个问题的?
    它的线程安全的实现有什么?
    ConcurrentHashMap 和 HashTable 有什么区别?
    说下它 1.7 和 1.8 的实现是什么?
    有什么区别?
    为什么要这么做?
    为什么说 ConcurrentHashMap 是线程安全的?
    它的 get 操作是有锁的吗?
    它是强一致性的吗?
    它为什么是弱一致性的?
    ConcurrentHashMap 1.7 和 1.8 是如何扩容的?
    sizeCtl 参数是干什么的,讲讲变换过程?
    为什么要用 volatile 修饰?
    说说它的功能?
    什么是 MESI 协议?
    CPU 原语是什么?
    什么是可见性?
    JMM 说说是什么?
    为什么要有 JMM ?
    Happened-before 是什么?
    它和 synchronized 的区别是什么?
    锁的升级与降级说下是什么?
    偏向锁是什么?
    Mark-Wrod 说下?
    锁的粒度是什么?
    锁消除了解吗?
    锁会被合并吗?
    什么时候会发生?
    你刚才说了 CAS,你能说下它是什么东西吗?
    为什么要引入 CAS ?
    ABA 问题是如何解决的?
    AQS 了解吗?
    它是如何实现的?
    CLH 又是什么?
    ReentrantLock 和 synchronized 区别是什么?
    为什么 ReetrantLock 能实现公平锁?
    默认构造器是公平锁吗?
    为什么不是?
    Copy-on-Write 了解吗?
    Fork/Join 又是什么?
    什么是线程,什么是协程?
    你刚才说了管程?
    你能说下这几个到底是做什么的吗?
    线程池说下参数,四种内置的拒绝策略,以及它的执行流程。你用过吗?
    为什么要这么设置参数?
    I/O 密集型应用和计算密集型应用如何设置其参数?
    你具体的业务线程池的参数是怎么设计的?
    为什么?
    测过吗?
    你定制化开发过吗?
    线程池预留了 3 个供子类扩展的方法你知道是哪三个吗?
    能做什么你知道吗?
    ThreadLocal 是什么?
    它为什么会造成内存泄漏?
    你实际开发中用到过吗?
    Spring 事务用这个干什么的?
    什么是事务的 SavePoint ?
    你知道死锁吗?
    如何解决死锁?
    sleep 和 wait 的区别是什么?
    BIO 、NIO 、AIO 是什么?
    说下区别,以及如何使用?
    了解 Netty 吗?
    如何解决粘包问题?
    ChannelPipeline 又是什么?
    ByteBuf 知道吗?
    读写指针又是什么?
    它和 mina 的区别是什么?
    它的 Zero-Copy ?
    了解过 FastThreadLocal 吗?
    它为什么比 ThreadLocal 快?
    有看过其中源码吗?
    Netty 解决了 NIO 类库的什么问题?
    空轮询又是什么?
    RPC 又是什么?
    序列化和反序列化又是什么?
    几个核心类说下。是干什么的?


    你说你了解虚拟机,你知道虚拟机的运行时数据区吗?
    哪些是线程共享的,哪些是线程独有的?
    你了解 JVM 调优吗?
    调优过吗?
    为什么要这么设置?
    垃圾回收算法有几种?
    为什么要分代收集?
    Young 区说说它的分布结构,为什么 Eden 区 80%?
    为什么大对象直接进入老年代?
    控制的参数是什么?
    一个对象如果不是大对象,怎样才能进入老年代?
    控制的参数是什么?
    什么时候会发生 OOM ?
    你遇到过吗?
    怎么解决的?
    为什么低版本的 JDK 要把永久代内存调大点?
    默认大小是多少你知道吗?
    什么是 Major GC,什么是 Minor GC ?
    什么情况下会频繁 GC ?
    你查看过 GC 日志吗?
    什么时候回收对象?
    引用计数和可达性分析是什么?
    为什么 Java 使用后者?
    Python 使用前者?
    什么是 GCRoot ?
    什么时候对象不可达?
    Java 的四种引用说下,分别用在什么场景?
    你知道 JDK 源码哪里有用到 WeakReference 吗?
    什么是 STW ?
    什么是 Safepoint ?
    类加载的过程说下,什么时候优化,以及不同的时候的主要优化是什么?
    解语法糖是什么时候?
    为什么在编译的时候解语法糖?
    什么是双亲委派模型?
    可以破坏吗?
    各个 ClassLoader 加载哪部分类的?
    你自定义过 ClassLoader 吗?
    你说你用过 Jstack 诊断 CPU 使用率飙升的情况,说下具体步骤?
    Arthas 用过吗?
    Class 文件格式说下,什么是魔数,Class 文件的魔数是什么?
    JMX 了解吗?


    ACID 说下是什么。你说你优化过 SQL,怎么优化的说下。like '%xx%',like '%xx',like 'xx%' 哪种情况会用到索引?
    说下 MySQL 执行流程。WAL(Write-Ahead Logging) 知道吗?
    redo log 和 undo log 是什么,它们作用说下。你说你改过 buffer_pool_size 等参数,为什么要改它?
    它里面的数据结构说下是什么?
    为什么冷热 3:7 ?
    join_buffer 你说你也改了,为什么?
    什么是驱动表和被驱动表?
    如何优化?
    你说你建了索引,什么是蔟集索引,什么是非蔟集索引?
    什么是回表?
    什么时候会索引失效?
    你的二级索引什么用得多?
    为什么优先使用普通索引,而不是唯一索引?
    MySQL 会死锁吗?
    什么是间隙锁?
    它会导致什么问题?
    MVCC 说下是什么?
    4 种事务说下是什么?
    哪种或者哪几种事务隔离级别能避免幻读?
    能避免脏读?
    你说你还开启了 binlog,能说说是什么吗?
    canal 用过吗?
    说说它的原理。MySQL 主从模式如何开启?
    你是如何优化 SQL 的?
    上亿级别的数据你是如何优化分页的?
    为什么不建议在 MySQL 中使用分区机制?
    为什么删了数据还是磁盘空间不变?
    自增主键用完了会怎么样?
    如何解决这个问题?
    自增主键什么时候是不连续的?
    这样做的好处是什么?
    为什么推荐用自增主键?
    B+ Tree 又是什么?
    如何迁移数据库?
    为什么不建议使用外键?
    在高版本的 MySQL 中 count(1) 和 count(*) 区别是什么?
    order by 是如何工作的?
    分页机制又是什么?
    ACL 和 RBAC 是什么?
    grant 之后一定要刷新吗?
    视图用过吗?
    它的作用说下。视图和表的区别说下。存储过程写过吗?
    存储函数和存储过程的区别说下。NoSQL 用过吗?
    OceanBase 了解吗?
    HBase 了解吗?
    <u>HBase 有哪些坑,你碰到过吗?
    什么是 RegionServer ?
    </u>什么时候用 NoSQL,它能取代 RDBMS 吗?
    你说你用过 Elasticsearch,能说下它的请求执行过程吗?
    它的总体架构说下。它的插件你用过吗?
    你们的分词策略是什么?
    倒排索引说下是什么。

    给二叉树后序和中序遍历,写前序遍历。手写个快排。翻转一下链表。O ( 1 )找出链表有环。DFS 找出二叉树搜索树第 k 大节点。

    实现一个多线程类,并用该线程类实例化 3 个线程 A,B,C ; A 线程打印字符 A,B 线程打印字符 B,C 线程打印字符 C ;启动这 3 个线程,要求启动线程的顺序为 C 线程->B 线程->A 线程,并且最后输出内容为:A B C 。禁止使用 sleep 函数。阿里应该还有各种多线程打印的问题,这个得准备。
    findlisa
        74
    findlisa  
       2021-03-03 01:16:58 +08:00 via Android
    @young1lin 楼主在外包呆着吗
    young1lin
        75
    young1lin  
    OP
       2021-03-03 21:00:34 +08:00
    @findlisa 呆过一段时间,现在走了,真的坑。
    findlisa
        76
    findlisa  
       2021-03-03 23:23:54 +08:00 via Android
    @young1lin 在职面试吗,我现在都抽不出时间复习,想裸辞了
    young1lin
        77
    young1lin  
    OP
       2021-03-04 18:10:04 +08:00 via Android
    @findlisa 不要裸辞,每天坚持三个小时,拿来复习,巩固,两个月左右,差不多可以了
    yRebelHero
        78
    yRebelHero  
       2021-03-10 17:38:03 +08:00
    楼主太强了,我顶多回答出百分之五六十,可能还是结结巴巴的,而且有些我都没怎么听过。面大厂这些一定要会吗?
    fengwn
        79
    fengwn  
       2021-03-10 17:57:33 +08:00
    就尼玛离谱, Java 就是编程界的 996
    young1lin
        80
    young1lin  
    OP
       2021-03-10 17:58:22 +08:00
    @yRebelHero 这些还是基础,更难的我没写,我还没解答出来。问的实际应用场景,电商活动要保证优惠活动前后查询请求都要在 Redis 上,商品的优惠信息会变,Redis 如何设计之类的。还有问了我为什么 Redis 不能叫 WAL,我当时紧张没回答上来。
    yRebelHero
        81
    yRebelHero  
       2021-03-10 20:12:19 +08:00
    @young1lin 这还是基础??那我进大厂无缘了。
    llyCat
        82
    llyCat  
       2021-03-11 09:11:45 +08:00
    @findlisa 我裸辞了, 就是平时没时间背这些打算裸辞后有时间背背, 想想有点冲动了
    young1lin
        83
    young1lin  
    OP
       2021-03-12 21:13:43 +08:00
    @yRebelHero 真的很基础,多看书就好了,对应的书籍这些内容都有。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2858 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 08:35 · PVG 16:35 · LAX 00:35 · JFK 03:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.