大家好,我是Java大厂面试君。 是的,没有错,年前我去字节面试了!
给大家分享一个面试小插曲
面试官:“你结婚了吗?” 我:“没有” 面试官:“我也没有”
言归正传,具体的简历怎么写和面试流程我就不说了,很多人都有分享。 面完之后问我什么时候能到岗,我说再考虑考虑。 此次面试可谓是从java基础语法、JVM、多线程到MySQL、spring、springboot、springcloud,再有dubbo、mybatis、redis、网络底层IO、Linux、MQ、zookeeper、netty、大数据、数据结构与算法、再到设计模式等等都有所涉及。
毕竟咱们是搞技术的,下面具体说下面试都问了哪些问题。
问题一:CMS、G1垃圾回收器中的三?标记你了解吗?
三?标记法是?种垃圾回收法,它可以让 JVM 不发?或仅短时间发? STW(Stop TheWorld),从?达 到清除 JVM 内存垃圾的?的。 三?标记法将对象的颜?分为了?、灰、?,三种颜?。 ??:该对象已经被标记过了,且该对象下的属性也全部都被标记过了; 灰?:对象已经被垃圾收集器扫描过了,但是对象中还存在没有扫描的引? ; ??:表示对象没有被垃圾收集器访问过,即表示不可达; 三?标记的漏标问题
问题二:如果CPU使?率突然飙升,你会怎么排查?
1、先通过top命令找到消耗cpu很?的进程id(假设是2732) top 命令是我们在 Linux 下最常?的命令之?,它可以实时显示正在执?进程的 CPU 使?率、内存使?率以及系统负载等信息。其中上半部分显示的是系统的统计信息,下半部分显示的是进程的使?率统计信息。 2、执?top -p 2732单独监控该进程 3、在第2步的监控界?输?H,获取当前进程下的所有线程信息 4、找到消耗cpu特别?的线程编号(假设是2734) 5、执?jstack 2732对当前的进程做dump,输出所有的线程信息 同时将第4步得到的线程?进制编号2734转成16进制(AAE),在堆栈信息??去找对应线程内容 6、最后解读线程信息,定位具体代码位置
看到这里你还好吗?
问题三:请概述下AQS
是?来构建锁或者其他同步组件的基础框架,?如ReentrantLock、ReentrantReadWriteLock和 CountDownLatch就是基于AQS实现的。它使?了?个int成员变量表示同步状态,通过内置的 FIFO队列来完成资源获取线程的排队?作。它是CLH队列锁的?种变体实现。它可以实现2种同 步?式:独占式,共享式。 AQS的主要使??式是继承,?类通过继承AQS并实现它的抽象?法来管理同步状态,同步器的 设计基于模板?法模式,所以如果要实现我们??的同步?具类就需要覆盖其中?个可重写的? 法,如tryAcquire、tryReleaseShared等等。 这样设计的?的是同步组件(?如锁)是?向使?者的,它定义了使?者与同步组件交互的接? (?如可以允许两个线程并?访问),隐藏了实现细节;同步器?向的是锁的实现者,它简化了 锁的实现?式,屏蔽了同步状态管理、线程的排队、等待与唤醒等底层操作。这样就很好地隔离 了使?者和实现者所需关注的领域。 在内部,AQS维护?个共享资源state,通过内置的FIFO来完成获取资源线程的排队?作。该队列 由?个?个的Node结点组成,每个Node结点维护?个prev引?和next引?,分别指向??的前 驱和后继结点,构成?个双端双向链表。 同时与Condition相关的等待队列,节点类型也是Node,构成?个单向链表。
问题四:InnoDB?棵B+树可以存放多少?数据?
这个问题的其实?常简单:约2千万 计算机在存储数据的时候,有最?存储单元,在计算机中磁盘存储数据最?单元是扇区(这就好?我们今 天进?现?的流通最?单位是??),?个扇区的??是 512 字节,??件系统(例如XFS/EXT4)的最 ?单元是块,?个块的??是 4k,?对于我们的 InnoDB 存储引擎也有??的最?储存单元——? (Page),?个?的??是 16K。
Innodb 的所有数据?件(后缀为 ibd 的?件),他的??始终都是 16384(16k)的整数倍。 数据表中的数据都是存储在?中的,所以?个?中能存储多少?数据呢?假设??数据的??是 1k,那 么?个?可以存放 16 ?这样的数据。 对于B+树??,只有叶?节点存放数据,?叶?节点存放的是只保存索引信息和下?层节点的指针信 息。?个?叶?节点能存放多少指针? 其实这也很好算,我们假设主键 ID 为常?的bigint 类型,?度为 8 字节,?指针??在 InnoDB 源码中 设置为 6 字节,这样?共 14 字节,我们?个?中能存放多少这样的单元,其实就代表有多少指针,即 16384/14=1170个。 那么可以算出?棵?度为2的B+树,存在?个根节点和若?个叶?节点能存放 117016=18720 条这样 的数据记录。 根据同样的原理我们可以算出?个?度为 3 的B+ 树可以存放: 11701170*16=21902400 条这样的记 录。 这几个问题你会了吗?
一、ActiveMQ 服务器宕机怎么办? 二、JDK动态代理和CGLIB动态代理的区别? 三、Redis 最适合的场景? 能够看到这里的朋友一定是对对大厂面试感兴趣的,或者正在学习准备面大厂的,这份笔记从入门到进阶到高阶以及实践案例,可以说是十分完美了。
点赞的小伙伴最终都拿到了心仪大厂的 offer 哦??( ???? ???)??*?
|