-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
添加了新的面试经验分享,包括快手校招一面和字节技术中台校招Java一面的情况。对面试过程、问题及答案进行了详细描述,以帮助后来的面试者准备。
- Loading branch information
Showing
2 changed files
with
103 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
--- | ||
title: 2024.04.08快手校招一面 | ||
date: 2024-04-08 | ||
category: | ||
- 快手 | ||
- 校招 | ||
- 一面 | ||
--- | ||
|
||
|
||
|
||
# 2024.4.8快手一面 | ||
|
||
### 那里用的Docker,为什么用Docker?为什么不用虚拟机? | ||
|
||
部署基础环境的时候(如seata,jenkins),很方便。部署Java环境的时候,先把jar包构建出一个容器然后进行部署,好处是安装和部署软件都很方便,并且容器之间可以隔离,Docker 容器相比传统的虚拟机更加轻量级,不需要完整的操作系统。 | ||
|
||
### Docker的优缺点,网络模式 | ||
|
||
容器适用不同的环境,移植性好。比虚拟机来说可以快速部署和启动。资源之间相互隔离,同时共享宿主机的内核资源。Dockerfile镜像构建和容器运行来确保环境的一致性。轻松实现水平扩展,通过编排工具k8s自动管理容器,版本控制和回滚 | ||
|
||
缺点性能会比原生低一点,网络配置复杂。 | ||
|
||
网络模式: | ||
|
||
1. bridge模式,可以和宿主机以及其他容器通信 | ||
2. host模式,使用宿主机的网络,直接暴露,无法通过端口隔离 | ||
|
||
### Docker部署服务的流程 | ||
|
||
1. 编写一个Dockfile文件,主要是拉取Java8镜像,然后把jar包放到容器里,再启动 | ||
2. 使用`docker build`构建出一个镜像 | ||
3. 启动容器`docker run`或者`docker-compose up -d ` | ||
|
||
### GPG密钥对 | ||
|
||
分公钥和私钥。公钥加密私钥解密,私钥签名公钥验签。GPG专注于加密解密验证签名,SSH的RSA专注几远程登录。 | ||
|
||
### HTTPs的过程 | ||
|
||
HTTPS比HTTP协议安全,因为HTTP是明文传输,而HTTPS是加密传输,加密过程中使用了三种加密手段,分别是证书,对称加密和非对称加密。HTTPS相比于HTTP多了一层SSL/TSL。 | ||
|
||
1. 证书加密,服务器使用证书加密之前需要去证书颁发机构申请服务器证书,会把本地证书发送给客户端,客户端验证服务器的身份 | ||
2. 对称加密:客户端和服务器通信事业对称加密,使用同一私钥进行,加密算法公开,私钥不可以泄漏 | ||
3. 非对称加密:客户端使用公钥加密,服务器用私钥解密 | ||
|
||
HTTPs的整体流程: | ||
|
||
1.客户端想服务器发起HTTPS的请求,连接到服务器的443端口; | ||
|
||
2.服务器将非对称加密的公钥传递给客户端,以证书的形式回传到客户端 | ||
|
||
3.服务器接受到该公钥进行验证,就是验证2中证书,如果有问题,则HTTPS请求无法继续;如果没有问题,则上述公钥是合格的。(第一次HTTP请求)客户端这个时候随机生成一个私钥,成为client key,客户端私钥,用于对称加密数据的。使用前面的公钥对client key进行非对称加密; | ||
|
||
4.进行二次HTTP请求,将加密之后的client key传递给服务器; | ||
|
||
5.服务器使用私钥进行解密,得到client key,使用client key对数据进行对称加密 | ||
|
||
6.将对称加密的数据传递给客户端,客户端使用非对称解密,得到服务器发送的数据,完成第二次HTTP请求。 | ||
|
||
![img](https://i-blog.csdnimg.cn/blog_migrate/3cf28afee71670667e8853d4091e1290.png) | ||
|
||
### TSL四次握手 | ||
|
||
1. 第一次,客户端发送Client Hello消息根服务器打招呼,带着客户端的TSL版本,密码套件列表,随机数(用来服务器生成对称加密密钥的材料) | ||
2. 第二次,服务端收到Client Hello后,会确认TSL版本是否支持,从密码套件中选择一个,生成随机数,然后将这些信息发送给客户端Server Hello | ||
3. 第三次,客户端生成新的随机数,用服务器的公钥加密改随机数通过Client Key Exchange发送给服务端,服务端收到后,会用私钥来解密得到随机数,这样就有了三个随机数。双方根据三个随机数生成会话密钥,客户端发送Change Cipher Spec来告诉服务端加密发送,再发送Encrypted Handshake Message(Finishd)把之前所有发送的数据做个**摘要**,再用会话密钥(master secret)加密一下,让服务器做个验证验证加密通信「是否可用」和「之前握手信息是否有被中途篡改过」。 | ||
4. 第四次,服务器也是同样的操作,发「**Change Cipher Spec**」和「**Encrypted Handshake Message**」消息,如果双方都验证加密和解密没问题,那么握手正式完成。 | ||
|
||
### 项目中使用spring事务了吗,啥场景需要事务? | ||
|
||
多步骤数据库操作,跨数据库操作发生异常,需要回滚 | ||
|
||
### MYSQL的索引数据结构是什么样的? | ||
|
||
B+Tree 是一种多叉树,叶子节点才存放数据,非叶子节点只存放索引,而且每个节点里的数据是按主键顺序存放的。每一层父节点的索引值都会出现在下层子节点的索引值中,因此在叶子节点中,包括了所有的索引值信息,并且每一个叶子节点都有两个指针,分别指向下一个叶子节点和上一个叶子节点,形成一个双向链表。 | ||
|
||
B+Tree 存储千万级的数据只需要 3-4 层高度就可以满足,这意味着从千万级的表查询目标数据最多需要 3-4 次磁盘 I/O,所以B+Tree 相比于 B 树和二叉树来说,最大的优势在于查询效率很高,因为即使在数据量很大的情况,查询一个数据的磁盘 I/O 依然维持在 3-4次。 | ||
|
||
### B+树和B树的区别 | ||
|
||
对于 B 树,只有叶子节点保存数据,内部节点仅存索引值,不适合范围查找。 | ||
|
||
### 什么是回表 | ||
|
||
现在有两个索引,主键索引和二级索引,也就是有两个B+树 | ||
|
||
- 主键索引的 B+Tree 的叶子节点存放的是实际数据,所有完整的用户记录都存放在主键索引的 B+Tree 的叶子节点里; | ||
- 二级索引的 B+Tree 的叶子节点存放的是主键值,而不是实际数据。 | ||
|
||
如果要根据二级索引查询某个数据,会先去二级索引的B+树叶子结点找到主键索引,再根据主键索引回表查询到真实的数据,也就是主键对应的那个B+树的叶子结点的数据。 | ||
|
||
### 联合索引 | ||
|
||
使用联合索引时,存在最左匹配原则,也就是按照最左优先的方式进行索引的匹配。在使用联合索引进行查询的时候,如果不遵循「最左匹配原则」,联合索引会失效,这样就无法利用到索引快速查询的特性了。 |