元戎启行Java后端一面凉经

背景:985本硕,快手实习

  1. 自我介绍

  2. Integer i = new Integer(100);
    Integer j = new Integer(100);
    (i == j) ? false  // 只有valueOf才会使用常量池(-128~127),new Integer会直接创建新对象
    
    String a = "abc";
    String b = "a" + "b" + "c";  // 经过编译器优化成了String str = “abc”
    (a == b) ? true  // 字符串常量池,字面量相同的引用也相同
    
    String c = "abcd";
    String d = a + "d";  // 经过编译器优化成了StringBuilder
    (c == d) ? false

    回答输出结果,为什么?

  3. String b在JVM中具体是怎么创建的?

    栈中创建一个对String类的对象引用变量b,然后通过符号引用去字符串常量池里找有没有”abc”,如果没有,则将”abc”存放进字符串常量池,并令str2指向”abc”,如果已经有”abc” 则直接令b指向“abc”。“abc”存于常量池在 编译期间完成 。
  4. JVM中运行时数据区都包含那些部分?

    新生代内存(Young Generation) (Eden 区、两个 Survivor 区 S0 和 S1)
    老生代(Old Generation)
    永久代\元空间
  5. 堆是干嘛的?方法区是干嘛的?虚拟机栈是干嘛的?

  6. 讲讲堆分为那些部分?每个部分都是啥?

  7. 讲讲垃圾收集?

  8. 一个对象是怎么从新生代流转到老年代的?

  9. survive0区域、survive1区域,具体讲讲?

    大部分情况,对象都会首先在 Eden 区域分配,在一次新生代垃圾回收后,如果对象还存活,则会进入 S0 或者 S1,并且对象的年龄还会加 1(Eden 区->Survivor 区后对象的初始年龄变为 1),当它的年龄增加到一定程度(默认为 15 岁和年龄中位数的最小值),就会被晋升到老年代中。对象晋升到老年代的年龄阈值,可以通过参数 -XX:MaxTenuringThreshold 来设置。
    
    HotSpot实现的复制算法流程如下:
     1. 当Eden区满的时候,会触发第一次Minor gc,把还活着的对象拷贝到Survivor From区;当Eden区再次触发Minor gc的时候,会扫描Eden区和From区域,对两个区域进行垃圾回收,经过这次回收后还存活的对象,则直接复制到To区域,并将Eden和From区域清空。
     2. 当后续Eden又发生Minor gc的时候,会对Eden和To区域进行垃圾回收,存活的对象复制到From区域,并将Eden和To区域清空。
     3. 部分对象会在From和To区域中复制来复制去,如此交换15次(由JVM参数MaxTenuringThreshold决定,这个参数默认是15),最终如果还是存活,就存入到老年代。
  1. Java线程有那些状态,各个状态是怎么流转的

  2. 如果执行sleep方***进入什么状态

  3. 线程同步机制了解嘛?

  4. Lock有那些具体实现?

  5. Synchronize和RetreentLock有什么区别?分别会在什么情况下使用?

  6. 讲讲Synchronize锁升级?

  7. 讲讲CAS的原理?会遇到什么问题?怎么解决?

  8. 线程安全的集合类有那些?

  9. 如果我想要一个线程安全的List,应该怎么做?

  10. 线程池了解嘛?有哪些核心参数?执行流程是什么?

  11. 内存有限,快速找到top10000,怎么办?

  12. 数据量极大,找到一个数在其中是否存在,怎么做?

  13. 布隆过滤器的原理?优缺点?

  14. 如果让你实现布隆过滤器的hash算法,怎么写?

    k(hash算法个数) = -(ln p)/ (ln 2)  p为误检率
  1. Mysql事务讲一讲

  2. Mysql是如何实现事务的四大特性的?

  3. redo log、undo log、bin log都是干啥的?

  4. Innodb的索引的数据结构是什么?

  5. B树和B+树的区别是什么,为什么使用B+树?

  6. 聚簇索引和非聚簇索引的区别是什么?

  7. 非主键索引是聚簇索引吗,怎么实现的?讲讲回表?

  8. select a from database where b = 1 order by c,如果是你该怎么建立索引?为什么这么建立?

  9. tcp、udp有什么区别?有什么优缺点?

  10. tcp比udp效率高?为什么tcp比udp效率高?

总结:面了一个小时八股,我写的答案的都是当时没答出来的......

#元戎启行##面经##23届提前批#
全部评论
元戎的面试是真的有点东西的,不直接考八股,写段代码问你对不对,然后再讲相关的八股原理
1 回复 分享
发布于 2022-07-22 13:36
收藏了
1 回复 分享
发布于 2022-07-20 15:51
感谢
点赞 回复 分享
发布于 2022-07-21 17:04
可内推zoom,内推码见主页
点赞 回复 分享
发布于 2022-07-24 14:17
这不是基本都答上来了么, 这也挂???
点赞 回复 分享
发布于 2022-07-25 10:23
老哥什么时候投的呀,14号投的现在还是初筛
点赞 回复 分享
发布于 2022-07-25 14:09
老哥,,想请教一下第31题那个sql。如何建索引是怎么考虑的呢?
点赞 回复 分享
发布于 2022-07-27 19:08
和我问的一半以上都一样感觉
点赞 回复 分享
发布于 2022-08-01 10:07
大佬,元戎没看到后端职位啊,是软件工程师吗?
点赞 回复 分享
发布于 2022-08-02 14:21
老哥33那里,tcp和udp到底那个效率高,不应该是udp嘛
点赞 回复 分享
发布于 2022-08-22 00:53 广东
面经mark
点赞 回复 分享
发布于 2022-09-26 02:56 浙江

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
11-11 16:14
石河子大学 Java
点赞 评论 收藏
分享
10 85 评论
分享
牛客网
牛客企业服务