您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

时间:2021-04-22 10:35:30  来源:Java高级架构进阶师  作者:

这次面试字节跳动也是做了很多的准备,还好顺利拿到了offer,特分享一下这次的4面技术面真题,以及一份字节2-2师兄整理的面试手册,希望能够给一些正在面试字节或计划面试大厂的朋友提供帮助。

3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

字节跳动技术一面

  • 讲一下线程参数的含义
  • Innodb的索引实现
  • 为什么是B+树?
  • redis的使用,分布式锁的实现
  • 操作系统虚拟内存换页的过程
  • TCP三次握手
  • volatile关键字的作用
  • 乐观锁、悲观锁
  • 之前用过哪些设计模式?
  • 算法题:滑动窗口

字节跳动技术二面

  • 说一下B树和B+树的区别
  • 说一下HashMap的实现,扩容机制,扩容时如何保证可操作?
  • Redis扩容机制(渐进式单线程扩容)
  • Spring IoC的原理,如何实现,如何解决循环依赖?
  • 两线程对变量i进行加1操作,结果如何?为什么?怎么解决?
  • CAS概念、原子类实现原理
  • synchronize底层实现,如何实现Lock?
  • AQS有什么特点?
  • 手写项目中某个模块代码。
  • 介绍各种网络协议。
  • DNS在网络层用哪个协议,为什么。
  • 介绍HTTPS协议,详述SSL建立连接过程。
  • 代码题:反转单链表。
  • 代码题:复杂链表复制。

字节跳动技术三面

  • 算法题多到爆炸,感觉是算法专场,宇宙条果真名不虚传
  • 说一下JAVA垃圾回收机制
  • 64匹马,8个赛道,找最快的4匹马
  • 给出两个升序数组A、B和长度m、n,求第k个大的
  • 给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素
  • 讲一下多线程与多进程区别
  • JVM中什么时候会进行垃圾回收?什么样的对象是可以回收的?
  • Spring主要思想是什么?

字节跳动技术四面

  • 场景题目:设计一个短域名服务:短信存不了太长网站,需要弄成短域名,你该如何设计一个服务,可以为全国的网址服务。
  • TCP为什么是三次握手四次挥手?
  • 数据库的隔离级别
  • sql题,写了个连表查询外加模糊查询
  • 算法:镜像二叉树 ......

4月11号邮件收到信息,HR直接给了意向书,查收然后确认好了,确定了入职时间。

总的来说,自己如果有想要去的大公司,一定要提升好自己,让自己的能力和素质与公司匹配的上,我也一直相信,机会永远是留给有准备的人。

Java

基础

Java 基础这部分有一些太简单的问题就直接没有放上来。小伙伴们可以参考:Java 基础知识点总结[2]。

  • Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
  • String 、 StringBuffer 和 StringBuilder 的区别是什么? String为什么是不可变的?
  • == 与 equals?hashCode 与 equals ?
  • Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
  • 谈谈对 Java 注解的理解,解决了什么问题?
  • Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
  • 内部类了解吗?匿名内部类有了解吗?
  • BIO,NIO,AIO 有什么区别?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

Java 集合框架

  • 说说 List,Set,Map 三者的区别?三者底层的数据结构?
  • 有哪些集合是线程不安全的?怎么解决呢?
  • 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
  • HashMap 和 Hashtable 的区别?HashMap 和 HashSet 区别?HashMap 和 TreeMap 区别?
  • HashMap 的底层实现
  • HashMap的长度为什么是 2 的幂次方
  • ConcurrentHashMap 和 Hashtable 的区别?
  • ConcurrentHashMap 线程安全的具体实现方式底层具体实现
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

jvm

  • jvm 内存结构
  • jvm 调优参数
  • 什么是类加载?何时类加载?类加载流程?
  • 知道哪些类加载器。类加载器之间的关系?
  • 类加载器的双亲委派了解么?结合 Tomcat 说一下双亲委派(Tomcat 如何打破双亲委托机制?
  • 为什么需要双亲委派
  • Java 内存模型
  • 栈中存放什么数据,堆中呢?
  • 大对象放在哪个内存区域
  • 堆区如何分类
  • 垃圾回收有哪些算法
  • GC 的全流程
  • GC 中老年代用什么回收方法?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

多线程

  • 线程和进程的区别。
  • 什么是上下文切换?
  • 什么是线程死锁?如何避免死锁?
  • 乐观锁和悲观锁了解么?
  • 说说 sleep() 方法和 wait() 方法区别和共同点?
  • Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?新线程添加的流程?
  • 实现 Runnable 接口和 Callable 接口的区别。
  • 讲一下 JMM(Java 内存模型)。volatile 关键字解决了什么问题?说说 synchronized 关键字和 volatile 关键字的区别。
  • AQS 原理了解么?AQS 组件有哪些?
  • 用过 CountDownLatch 么?什么场景下用的?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

网络

  • OSI 与 TCP/IP 各层的结构与功能,都有哪些协议?为什么网络要分层?
  • 计算机网络的一些常见状态码
  • ping 所使用的协议
  • TCP 的三次握手与四次挥手的内容?TCP 为什么连接是三次握手而断开是四次握手?
  • TCP 与 UDP 的区别及使用场景
  • TCP 是如何保证传输的可靠性?
  • 一次完整的 HTTP 请求所经的步骤
  • HTTP 协议了解么?HTTP 是基于 TCP 还是 UDP 的?
  • HTTP 报文的内容简单说一下!HTTP 请求报文和响应报文中有哪些数据?
  • HTTP 和 HTTPS 的区别了解么?
  • HTTP 请求有哪些常见的状态码?
  • HTTP 长连接和短连接了解么?
  • Cookie 和 Session 的关系
  • URI 和 URL 的区别是什么?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

算法和数据结构

  • LRU 算法了解吗?你能实现一个吗?
  • 写排序算法(快排、堆排)
  • 使用数组实现一个栈
  • 使用数组实现一个队列
  • 实现一个链表、反转链表、
  • ......

数据结构

  • 数组 vs 链表
  • 栈的应用场景
  • 队列的分类、应用场景
  • 红黑树的特点、红黑树 vs 二叉查找树
  • 哈希表、哈希表应用场景
  • 布隆过滤器了解吗?
  • ......
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

设计模式

  • 何为设计模式?有哪些常见的设计模式?
  • 单例模式了解么?说一下单例模式的使用场景。手写一个单例模式的实现。
  • 观察者模式了解么?说一下观察者模式的使用场景。
  • 工厂模式了解么?说一下工厂模式的使用场景。
  • 责任链模式了解么?哪些开源项目(Netty、MyBatis ...)中用到了责任链模式?怎么用的?
  • SOLID 原则了解么?简单谈谈自己对于单一职责原则和开闭原则的理解。
  • 阅读 Spring 源码的时候什么设计模式最让你影响深刻?能简单讲讲吗?

常见框架

Spring

  • 什么是 Spring 框架?
  • 列举一些重要的 Spring 模块?
  • 谈谈自己对于 Spring IoC 和 AOP 的理解
  • Spring Bean 的生命周期说一下
  • Spring 中的 bean 的作用域有哪些?
  • 拦截器和过滤器了解么?
  • Spring 动态代理默认用哪一种
  • hibernate 和 mybatis 区别
  • Spring Boot 和 Spring 的区别
  • 说出使用 Spring Boot 的主要优点
  • 什么是 Spring Boot Starter?
  • 介绍一下@SpringBootApplication 注解
  • Spring Boot 的自动配置是如何实现的?
  • Spring Boot 支持哪些嵌入式 web 容器?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

Netty

  • BIO,NIO 和 AIO 有啥区别?
  • Netty 是什么?为啥不直接用 NIO 呢?
  • 为什么要用 Netty?Netty 应用场景了解么?
  • 介绍一下 Netty 的核心组件?
  • Bootstrap 和 ServerBootstrap 了解么?
  • NioEventLoopGroup 默认的构造函数会起多少线程?
  • Netty 线程模型了解么?
  • 什么是 TCP 粘包/拆包?有什么解决办法呢?
  • Netty 长连接、心跳机制了解么?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

权限认证

  • 认证 (Authentication) 获授权 (Authorization)的区别是什么?
  • 什么是 Cookie ? Cookie 的作用是什么?如何在服务端使用 Cookie ?
  • Cookie 和 Session 有什么区别?如何使用 Session 进行身份验证?
  • 如果没有 Cookie 的话 Session 还能用吗?
  • 为什么 Cookie 无法防止 CSRF 攻击,而 token 可以?
  • 什么是 Token?什么是 JWT?如何基于 Token 进行身份验证?
  • 什么是 OAuth 2.0?
  • 什么是 SSO(单点登录)?

微服务/分布式

RPC

RPC 基础:

  1. 了解 RPC 吗?有哪些常见的 RPC 框架?
  2. 如果让你自己设计 RPC 框架你会如何设计?
  3. 服务之间的调用为啥不直接用 HTTP 而用 RPC?

Dubbo:

  1. Dubbo 了解吗?
  2. Dubbo 的工作原理了解么?注册中心扮演了什么角色?注册中心挂了可以继续通信吗?
  3. Dubbo 的负载均衡策略了解么?
  4. Dubbo 的 spi 机制了解么?带来了啥好处?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

消息队列

  1. 为什么要用消息队列?
  2. 对比一下常见的消息队列?
  3. 如何保证消息不被重复消费?
  4. 如何保证消息消费的顺序性?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

分布式 ID

  1. 何为 ID?
  2. 何为分布式 ID?
  3. 一个合格的分布式 ID 需要满足什么要求?
  4. 分布式 ID 常见的生成方法有哪些?(数据库主键自增、数据库的号段模式、UUID、SNOWFLAKE 等等)

其他(网关、限流...)

  1. 为什么要网关?
  2. 为什么要用分布式锁?有哪些实现方式?
  3. 限流的算法有哪些?
  4. 什么是服务熔断?什么是服务降级?
  5. 为什么要分布式 id ?分布式 id 生成策略有哪些?
  6. 微服务下为什么需要链路追踪系统?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

数据库

MySQL

基础

  1. 非关系型数据库和关系型数据库的区别?
  2. 事务的四大特性了解么?
  3. MySQL 事务隔离级别?默认是什么级别?
  4. 乐观锁与悲观锁的区别?
  5. MySQL 数据库两种存储引擎的区别?

索引

  1. 为什么索引能提高查询速度?
  2. 聚集索引和非聚集索引的区别?非聚集索引一定回表查询吗?
  3. 索引这么多优点,为什么不对表中的每一个列创建一个索引呢?(使用索引一定能提高查询性能吗?)
  4. 索引底层的数据结构了解么?Hash 索引和 B+树索引优劣分析
  5. B+树做索引比红黑树好在哪里?
  6. 最左前缀匹配原则了解么?
  7. 什么是覆盖索引
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

Redis

  1. 分布式缓存常见的技术选型方案有哪些?说一下 Redis 和 Memcached 的区别和共同点
  2. 说一下在缓存情况下查询数据和修改数据的流程。
  3. Redis 有哪些数据结构?SDS 了解么?
  4. Redis 内存满了怎么办?
  5. Redis 内存淘汰算法除了 LRU 还有哪些?
  6. Redis 给缓存数据设置过期时间有啥用?Redis 是如何判断数据是否过期的呢?
  7. Redis 事务了解么?(Redis 可以通过 MULTI,EXEC,DISCARD 和 WATCH 等命令来实现事务功能)
  8. 缓存穿透和缓存雪崩问题了解么?有哪些解决办法?
  9. 如何基于 Redis 实现分布式锁?
3年经验硬抗字节Java岗,25天4轮面试终拿意向书,复述原题及经验

 

进阶

  1. 一条 SQL 语句在 MySQL 是如何执行的?
  2. explain 命令了解么?
  3. 简单说一下 SQL 调优思路。
  4. 简单说一下大表优化的思路。
  5. 分库分表了解么?为什么要分库分表?有哪些常见的分库分表工具(sharding-jdbc、TSharding、MyCAT...)?

系统设计/场景题

  1. 假如有 10 亿个数,只有一个重复,内存只能放下 5 亿个数,怎么找到这个重复的数字?
  2. 如何设计一个秒杀系统(服务端、数据库、分布式)?分布式系统的设计?
  3. 有一个服务器专门接收大量请求,怎么设计?
  4. 如果让你自己设计 RPC 框架你会如何设计?
  5. 怎么快速出现一个 stackoverflow 错误?

其他问题

  1. 自我介绍。
  2. 说说你的项目中的亮点有哪些。
  3. 画一下你的项目的架构图。
  4. Restful 了解吗?简单说一下自己对它的认识,如果我要返回一个 boolean 类型的数据怎么办?

经验总结

这是我在工作、面试中学习并总结到的一些知识点,都是一些比较典型的、面试常被问到的问题。如果你平时没有注意去总结的话,那么当你面试被问到的时候可能会是一脸懵圈,就算这个问题你知道怎么回事,但是你平时没有认真总结,你也可能会出现逻辑混乱的情况,从而错失工作机会。



Tags:Java   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  Tags: Java  点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Tags: Java  点击:(5)  评论:(0)  加入收藏
1、通过条件判断给变量赋值布尔值的正确姿势// badif (a === 'a') { b = true} else { b = false}// goodb = a === 'a'2、在if中判断数组长度不为零...【详细内容】
2021-12-24  Tags: Java  点击:(5)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  Tags: Java  点击:(10)  评论:(0)  加入收藏
传统游戏项目一般使用TCP协议进行通信,得益于它的稳定和可靠,不过在网络不稳定的情况下,会出现丢包严重。不过近期有不少基于UDP的应用层协议,声称对UDP的不可靠进行了改造,这意...【详细内容】
2021-12-23  Tags: Java  点击:(12)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  Tags: Java  点击:(11)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  Tags: Java  点击:(10)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  Tags: Java  点击:(14)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  Tags: Java  点击:(17)  评论:(0)  加入收藏
给新手朋友分享我收藏的前端必备javascript已经写好的封装好的方法函数,直接可用。方法函数总计:41个;以下给大家介绍有35个,需要整体文档的朋友私信我,1、输入一个值,将其返回数...【详细内容】
2021-12-15  Tags: Java  点击:(19)  评论:(0)  加入收藏
▌简易百科推荐
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  just do丶IT公众号    Tags:国企   点击:(1)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  博士聊IT    Tags:程序员   点击:(8)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03    财经杂志  Tags:程序员   点击:(15)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  云南贤哥在深圳    Tags:程序员   点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  findyi    Tags:程序员   点击:(14)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  郭主任    Tags:程序员   点击:(42)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  章大千    Tags:编程语言   点击:(40)  评论:(0)  加入收藏
北漂小伙李强(化名),在北京互联网大厂工作7年,月薪3万,离职回老家开摄影店,亏了200万。李强出生于山西一座名不经传的小城市,互联网专业大学毕业的他,没有听父母的劝言回到家乡考公...【详细内容】
2021-10-29  霸王课  今日头条  Tags:程序员   点击:(51)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  编程的艺术    Tags:   点击:(29)  评论:(0)  加入收藏
软件工程专业有Web开发、移动终端开发、大数据开发、计算机系统工程师、视频开发工程师、计算机软件应用工程师等就业方向。第一,Web开发。Web开发包括前端开发和后端开发。...【详细内容】
2021-10-19  辰新   企鹅号  Tags:软件工程   点击:(79)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条