乐趣区

关于java:字节跳动2020Java面经你离高薪就只差一片面试题了

前言

经验了惨痛的春招与秋招之后,也积攒了一些面经,心愿能对大家有所帮忙。因为字数限度须要答案的能够关注 GZH【程序员空间】收费支付完整版 PDF

其余

  1. 什什么是幂等?什什么状况下须要思考幂等?你怎么解决幂等的问题?

Java

  1. 多个线程同时读写,读线程的数量量远远⼤大于写线程,你认为应该如何解决

并发的问题?你会抉择加什什么样的锁?

  1. JAVA 的 AQS 是否了了解,它是⼲干嘛的?
  2. 除了了 synchronized 关键字之外,你是怎么来保障线程平安的?
  3. 什什么时候须要加 volatile 关键字?它能保障线程平安吗?
  4. 线程池内的线程如果全副忙,提交⼀一个新的工作,会发⽣生什什么?队列列全副

塞满了了之后,还是忙,再提交会发⽣生什什么?

  1. Tomcat 自身的参数你⼀个别会怎么调整?
  2. synchronized 关键字锁住的是什什么东⻄西?在字节码中是怎么示意的?在内

存中的对象上体现为什什么?

  1. wait/notify/notifyAll ⽅办法需不不须要被蕴含在 synchronized 块中?这是为什什

么?

  1. ExecutorService 你⼀个别是怎么⽤用的?是每个 service 放⼀一个还是⼀一个项⽬目

⾥里里⾯面放⼀一个?有什什么益处?
Spring

  1. 你有没有⽤用过 Spring 的 AOP? 是⽤用来⼲干嘛的? ⼤大略会怎么使⽤用?
  2. 如果⼀一个接⼝口有 2 个不不同的实现, 那么怎么来 Autowire ⼀一个指定的实现?
  3. Spring 的申明式事务 @Transaction 注解⼀个别写在什什么地位? 抛出了了异样

会⾃主动回滚吗?有没有方法管制不不触发回滚?

  1. 如果想在某个 Bean ⽣生成并拆卸结束后执⾏行行⾃自⼰己的逻辑,能够什什么⽅形式实

现?

  1. SpringBoot 没有放到 web 容器器⾥里里为什什么能跑 HTTP 服务?
  2. SpringBoot 中如果你想使⽤用⾃自定义的配置⽂文件⽽而不不仅仅是

application.properties,应该怎么弄弄?

  1. SpringMVC 中 RequestMapping 能够指定 GET, POST ⽅办法么?怎么指定?
  2. SpringMVC 如果心愿把输入的 Object(例例如 XXResult 或者 XXResponse)这

种包装为 JSON 输入, 应该怎么解决理?

  1. 怎么拦挡 SpringMVC 的异样,而后做⾃自定义的解决理,⽐比方打⽇日志或者包装

成 JSON

MySQL

  1. 如果有很多数据插⼊入 MYSQL 你会抉择什什么⽅形式?
  2. 如果查问很慢,你会想到的第⼀一个⽅形式是什什么?索引是⼲干嘛的?
  3. 如果建了了⼀一个单列列索引,查问的时候查出 2 列列,会⽤用到这个单列列索引吗?
  4. 如果建了了⼀一个蕴含多个列列的索引,查问的时候只⽤用了了第⼀一列列,能不不能⽤用上

这个索引?查三列列呢?

  1. 接上题,如果 where 条件后⾯面带有⼀一个 i + 5 < 100 会使⽤用到这个索引吗?
  2. 怎么看是否⽤用到了了某个索引?
  3. like %aaa% 会使⽤用索引吗? like aaa% 呢?
  4. drop、truncate、delete 的区别?
  5. 平时你们是怎么监控数据库的? 慢 SQL 是怎么排查的?
  6. 你们数据库是否⽀反对 emoji 表情,如果不不⽀反对,如何操作?
  7. 你们的数据库单表数据量量是多少?⼀个别多⼤大的时候开始呈现查问性能急

剧降落?

  1. 查问死掉了了,想要找出执⾏行行的查问过程⽤用什什么命令?找进去之后⼀个别你

会⼲干嘛?

  1. 读写拆散是怎么做的?你认为中间件会怎么来操作?这样操作跟事务有

什什么关系?

  1. 分库分表有没有做过?线上的迁徙过程是怎么样的?如何确定数据是正

确的?

JVM

  1. 你晓得哪些或者你们线上使⽤用什什么 GC 策略略? 它有什什么劣势,适⽤用于什什么

场景?

  1. JAVA 类加载器器包含⼏几种?它们之间的⽗父⼦子关系是怎么样的?双亲委派机

制是什什么意思?有什什么益处?

  1. 如何⾃自定义⼀一个类加载器器?你使⽤用过哪些或者你在什什么场景下须要⼀一个⾃自

定义的类加载器器吗?

  1. 堆内存设置的参数是什什么?
  2. Perm Space 中保留什什么数据? 会引起 OutOfMemory 吗?
  3. 做 gc 时,⼀一个对象在内存各个 Space 中被挪动的程序是什什么?
  4. 你有没有遇到过 OutOfMemory 问题?你是怎么来解决理这个问题的?解决理

过程中有哪些播种?

  1. 1.8 之后 Perm Space 有哪些变动? MetaSpace ⼤大⼩小默认是⽆有限的么? 还是

你们会通过什什么⽅形式来指定⼤大⼩小?

  1. Jstack 是⼲干什什么的? Jstat 呢? 如果线上程序周期性地呈现卡顿,你狐疑可

能是 gc 导致的,你会怎么来排查这个问题?线程⽇日志⼀个别你会看其中的什什么
局部?

  1. StackOverFlow 异样有没有遇到过?⼀个别你猜想会在什什么状况下被触

发?如何指定⼀一个线程的堆栈⼤大⼩小?⼀个别你们写多少?

Linux 命令

0. 增加 Java 学习:1037935907

  1. ⽇日志特地⼤大只想看最初 100 ⾏行行怎么弄弄? 如果想⼀始终看⽇日志的继续输入,⽤用

什什么命令?

  1. 如果⽇日志⼀一边输入,⼀一边想实时看到有没有某个关键字应该怎么弄弄?
  2. grep 如果疏忽略⼤大⼩小写应该怎么弄弄? 正则表达式呢?
  3. vim 往下⼀一⾏行行是什什么键?往下 30 ⾏行行呢? 跳到⽂文件开端⼀一⾏行行是什什么? 跳回来

是什什么? 向后搜寻是什什么?

  1. 如果有个⽂文本⽂文件,按空格作为列列的分隔符,如果想统计第三列列⾥里里⾯面的每

个单词的呈现次数应该怎么弄弄?

  1. 如果把上⾯面的呈现次数排个序应该怎么弄弄? 想依照数字自身的程序⽽而不不是

字符串串的顺序排列列怎么弄弄?

  1. Linux 环境变量量是以什什么作为分隔符的?环境变量量通过什什么命令设置?
  2. 给某个⽂文件权设置限⽐比方设置为 644 是⽤用什什么命令?这个 6 是什什么意思?
  3. Linux 下⾯面如果想看某个过程的资源占⽤用状况是怎么看的?零碎 load ⼤大略

指的什什么意思?你们线上零碎 load ⼀个别多少?如果⼀一个 4 核机器器,你认为多
少 load 是⽐比拟失常的?top 命令⾥里里⾯面按⼀一下 1 会发⽣生什什么?

  1. top 命令⾥里里⾯面,有时候所有过程的 CPU 使⽤用率加起来超过 100% 是怎么回

事?

  1. 还有哪些查看零碎性能或者供你发现问题的命令?你⼀个别是看哪个参

数?

  1. 想看某个过程关上了了哪些⽹网络连接是什什么命令?⾥里里⾯面连贯的状态你⽐比拟

关⼼心哪⼏几种?

— 偏题

  1. 有没有做过 Linux 零碎参数⽅方⾯面的优化,⼤大略优化过什什么?
  2. 零碎参数⾥里里⾯面有个叫做 backlog 的能够⽤用来⼲干什什么?
  3. 查看⽹网络连接发现好多 TIME_WAIT 可能是什什么起因?对你的应⽤用会有什什

么影响?你会抉择什什么样的⽅形式来缩小这些 TIME_WAIT

  1. 可否介绍⼀一下 TCP 三次握⼿手的过程,如果当初有个⽹网络程序,你⽤用第三⽅方

的 library 来发送数据,你狐疑这个 library 发送的数据有问题,那么怎么来验
证?tcpdump 导出的⽂文件你⼀个别是怎么剖析的?

  1. KeepAlive 是⽤用来⼲干什什么的?这样的益处是什什么?

Redis

— 开发

  1. 缓存穿透能够介绍⼀一下么?你认为应该如何解决这个问题
  2. 你是怎么触发缓存更更新的?(⽐比方设置超时工夫(被动⽅形式), ⽐比方更更新的时

候被动 update)?如果是被动的⽅形式如何管制多个⼊入⼝口同时触发某个缓存更更
新?

  1. 你们⽤用 Redis 来做什什么?为什什么不不⽤用其余的 KV 存储例例如 Memcached,

Cassandra 等?

  1. 你们⽤用什什么 Redis 客户端? Redis ⾼高性能的起因⼤大略能够讲⼀一些?
  2. 你相熟哪些 Redis 的数据结构? zset 是⼲干什什么的? 和 set 有什什么区别?
  3. Redis 的 hash, 存储和获取的具体命令叫什什么名字?
  4. LPOP 和 BLPOP 的区别?
  5. Redis 的有⼀一些蕴含 SCAN 关键字的命令是⼲干嘛的? SCAN 返回的数据量量是

固定的吗?

  1. Redis 中的 Lua 有没有使⽤用过? 能够⽤用来做什什么? 为什什么能够这么⽤用?
  2. Redis 的 Pipeline 是⽤用来⼲干什什么的?

— 运维

  1. Redis 长久化⼤大略有⼏几种⽅形式? aof 和 rdb 的区别是什什么? AOF 有什什么优缺

点吗?

  1. Redis Replication 的⼤大抵流程是什什么? bgsave 这个命令的执⾏行行过程?

— 偏题

  1. 如果有很多 KV 数据要存储到 Redis, 然而内存不不⾜足, 通过什什么⽅形式能够缩

减内存? 为什什么这样能够缩⼩小内存?

  1. Redis 中 List, HashTable 都⽤用到了了 ZipList, 为什什么会抉择它?

监控、稳定性

  1. 业务⽇日志是通过什什么⽅形式来收集的?
  2. 线上机器器如何监控?采⽤用什什么开源产品或者⾃自研的产品?它是分钟级的还

是秒级的?

  1. 如果让你来想方法收集⼀一个 JAVA 后端应⽤用的性能数据,你会在意哪些⽅方

⾯面? 你会抉择什什么样的⼯工具、思路路来收集?

  1. ⼀个别你调⽤用第三⽅方的时候会不不会监控调⽤用状况?

退出移动版