字节跳动Java面试挂了以后,流泪总结了这份大厂常问面试题

Posted Javachichi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节跳动Java面试挂了以后,流泪总结了这份大厂常问面试题相关的知识,希望对你有一定的参考价值。

前言

某天下午五点半突然接到了一个北京来电,是字节跳动打来的,当时心里一阵发慌,由于还在上班,就和面试官约定6点下班之后再来。挂完电话,心里忐忑得不行,感觉自己这也没准备好,那也没准备好。剩下半个小时完全没有心思再工作了,把常问的HashMap,concurrentHashMap底层看了一下,算是临时抱佛脚吧。一下班,就收拾出发在公司楼下找了个地方等面试电话。

蚂蚁金服Java面试挂了以后,流泪总结了这份大厂常问面试题

电话面试

六点电话如期而至。先是聊了下大概情况,然后聊了下工作经历。叫我挑选一个自己觉得掌握得最好的项目开始发问。

最开始问了你觉得项目中最难的地方,我毕业了一直在小公司,也没有感觉遇到特别困难的地方,憋了半天憋不出来。

面试官也放弃了,直接问,项目中用到Map集合吧,用到过哪些Map。自己就说了个最熟悉HashMap。但是面试官好像不太想问这个,又问有没有用到过排好序的Map,当时自己脑子短路了,没想TreeMap是排序的,当时竟然一时想不出有排好序的Map,就说了没有排好序的Map,但是可以实现Compareble接口来实现排序。肯定面试官也很无语,这送分题都不会啊!

蚂蚁金服Java面试挂了以后,流泪总结了这份大厂常问面试题

又问HashMap put方法的时间复杂度,我说因为HashMap底层是数组加链表实现的,如果没有hash碰撞时间复杂度就是O(1),有碰撞最坏情况就是O(n)。然后看到我建立上有写线程池,就问了下创建线程池的具体参数的含义,这个没啥难的,然后又问线程池的缓存队列,然后又问是否自己去实现过缓存队列。最后一问完全不知道咋回答,因为平时都是直接使用现成的。

继续发问,问了下JDK bin目录下的工具除了java javac还有没有用过其他的。又问项目除了开发,有没有用到优化方面的。我想肯定是想问JVM方面的了。就说了下自己在测试环境服务老是启动没多久就挂了,自己调整了下堆内存的大小。其实当时只是试探性地加大了堆内存,根本没有怎么去分析过。

面试官问,你是根据什么觉得要去调整堆内存大小的,自己当时就慌了,因为没有实际做过,所以就说自己在启动项目的时候加了输出GC日志的命令,看到有很多Full GC,所以就调整了。感觉面试官不是很满意。然后又问我你知道JVM垃圾回收机制吗?自己其实对JVM垃圾回收这一块还是挺熟悉的,但是这么一问自己一时不知道怎么回答,就把垃圾收集器说了一下,但是感觉不是很对。后来回来百度JVM垃圾回收机制,感觉都有说到JVM内存结构,对象可达性分析,垃圾回收算法,垃圾回收器都有讲到。其实自己这块挺熟悉的,但是一笼统地问JVM垃圾回收机制当时一直在想我该回答哪一块的内容。

最后面试官问了如果你要让现在做的项目更好,你会添加一些什么功能,但我想了很久也没有想出来。面试官应该也很无语,但是不得不说面试官全程都是态度非常好,电话面试都能感受到面试官是一个又谦虚又有真才实学的人。

在这里插入图片描述

最后

通过这次电话面试,我觉得自己还有很多底层知识需要巩固学习,所以最近一直在到处搜集一些Java学习资料以及互联网大厂面试题,这套一千多道面试题宝典,结合今年金三银四各种大厂面试题,以及 GitHub 上 star 数超 30K+ 的文档整理出来的,我上传以后,毫无意外的短短半个小时点赞量就达到了 13k,说实话还是有点不可思议的。

一千道互联网 Java 工程师面试题

内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、mysql、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈(485页)

初级—中级—高级三个级别的大厂面试真题

阿里云——Java 实习生/初级

List 和 Set 的区别 HashSet 是如何保证不重复的

HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?

HashMap 的扩容过程

HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?

对象的四种引用

Java 获取反射的三种方法

Java 反射机制

Arrays.sort 和 Collections.sort 实现原理 和区别

Cloneable 接口实现原理

异常分类以及处理机制

wait 和 sleep 的区别

数组在内存中如何分配

答案展示:

美团——Java 中级

BeanFactory 和 ApplicationContext 有什么区别

Spring Bean 的生命周期

Spring IOC 如何实现

说说 Spring AOP

Spring AOP 实现原理

动态代理(cglib 与 JDK)

Spring 事务实现方式

Spring 事务底层原理

如何自定义注解实现功能

Spring MVC 运行流程

Spring MVC 启动流程

Spring 的单例实现原理

Spring 框架中用到了哪些设计模式

为什么选择 Netty

说说业务中,Netty 的使用场景

原生的 NIO 在 JDK 1.7 版本存在 epoll bug

什么是 TCP 粘包/拆包

TCP 粘包/拆包的解决办法

Netty 线程模型

说说 Netty 的零拷贝

Netty 内部执行流程

答案展示:

蚂蚁金服——Java 高级

题 1:

  1. jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)?

  2. ConcurrentHashMap

  3. 并行跟并发有什么区别?

  4. jdk1.7 到 jdk1.8 java 虚拟机发生了什么变化?

  5. 如果叫你自己设计一个中间件,你会如何设计?

  6. 什么是中间件?

  7. ThreadLock 用过没有,说说它的作用?

  8. Hashcode()和 equals()和==区别?

  9. mysql 数据库中,什么情况下设置了索引但无法使用?

  10. mysql 优化会不会,mycat 分库,垂直分库,水平分库?

  11. 分布式事务解决方案?

  12. sql 语句优化会不会,说出你知道的?

  13. mysql 的存储引擎了解过没有?

  14. 红黑树原理?

题 2:

  1. 说说三种分布式锁?

  2. redis 的实现原理?

  3. redis 数据结构,使⽤场景?

  4. redis 集群有哪⼏种?

  5. codis 原理?

  6. 是否熟悉⾦融业务?记账业务?蚂蚁⾦服对这部分有要求。

好啦~展示完毕,大概估摸一下自己是青铜还是王者呢?

前段时间,在和群友聊天时,把今年他们见到的一些不同类别的面试题整理了一番,于是有了以下面试题集,也一起分享给大家~

如果你觉得这些内容对你有帮助,可以加入csdn进阶交流群,领取资料

基础篇


JVM 篇


MySQL 篇



Redis 篇




由于篇幅限制,详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

如果你觉得这些内容对你有帮助,可以在这里,领取资料

以上是关于字节跳动Java面试挂了以后,流泪总结了这份大厂常问面试题的主要内容,如果未能解决你的问题,请参考以下文章

2021年你与字节跳动只差这份笔记,吊打面试官系列!

我凭借这份pdf拿下了蚂蚁金服字节跳动小米等大厂的offer

凭这份pdf我拿下了美团字节跳动阿里小米等大厂的offer

凭这份pdf我拿下了美团字节跳动阿里小米等大厂的offer

2021年你与字节跳动只差这份笔记,大厂面试题汇总

2021年你与字节跳动只差这份笔记,大厂面试题汇总