字节跳动系统部面经(已意向书)
一面 2021/9/22 10:00 35min
- 自我介绍
- 用过 Golang 吗?
- TCP 四次挥手中 CLOSE_WAIT 出现在什么时候?
- TCP 关闭连接为什么要四次挥手?
- 如何查看服务器 CLOSE_WAIT 数量?
- TCP 和 UDP 有什么区别?
- 哪些应用层协议是基于 TCP 的?哪些是基于 UDP 的?
- HTTPS 了解吗?
- 输入域名解析出 IP 用什么命令?
- 如何查看进程的信息?一般关注进程的哪些信息?什么命令可以查看 IO 信息?
- 如何抓取某个端口上的网络数据包?HTTPS 能抓包吗?
- 操作系统的用户态和内核态区别?什么时候会发生用户态到内核态的切换?
- Redis 为什么要有主从?主从之间如何同步的?
- zset 了解吗?为什么是有序的?
- MySQL 用过吗?写几个 SQL,一张 Student 表,name、sex 和 age 三个字段,如何查询年龄最大的男生?如何查询重名的男生?
select * from student where age in (select max(age) from student where sex='1') select name from student where sex='1' group by name having count(*) > 1
- 有一个接口比较慢?该用什么思路排查?
- 怎么定位到慢的 SQL?如何查看有没有用到索引?
- MySQL 的查询优化器了解吗?
- 算法题:剑指 Offer 09. 用两个栈实现队列
反问:
- 你们部门主要做什么
- 哪些方面不足
Linux 一些命令没有答好,其余答的还可以。面完当天没消息,以为凉了,第二天问 HR 说 pending 了,等了三天接到了 HR 的电话,约了二面。
二面 2021/9/27 16:00 50min
- 自我介绍
- 你自己在个人的电脑上有尝试过安装某个 Linux 发行版吗?安装的方法还记得吗?大概是怎么安装的?
- 如果我给你一台或几台服务器做服务端,另外再给你 1 万台机器是新买的,然后上面没有任何操作系统,我希望你把这一万台机器,统一装成 Ubuntu,这个有什么好的办法?
- 比如说一般有一些叫无盘工作站,或者有一些开发场景,就是这些机器可能就没有硬盘,但是他也能够进行启动,这块大概是什么原理呢?
- 假设系统安装好了,在里面我想去查 Nginx 这个软件包是否安装了,这个一般怎么查?(rpm -qa、dpkg -l、yum list installed)
- 如果是一些目录相关的管理呢,比如说我假定一个目录,里面有一些文件,好长时间没有变动了,我想把他删掉?一个文件一般都有几个时间,比如说访问时间、修改时间,这几个时间大概是怎么描述的?在 C 语言或者说操作系统这一块是怎么定义的,有没有关注过?
题目 1
标题
老文件删除
题目描述
查找 /var/log/nginx 目录下超过 30 天没改动的文件并删除
find /var/log/nginx -type f -mtime +30 | xargs rm -f
find /var/log/nginx -type f -mtime +30 -exec rm -f {} \; - 如果一个目录,下面也有子目录,有一些内容,假定为 A 目录,有另外一个 B 目录,他里面也有一些内容,我想让 B 目录的内容通过你的操作之后,变成和 A 目录完全一样,这个有什么好的办法?(cp、rsync)
- cp 命令的一些参数?如果我想保留他的时间和 owner 信息,怎么进一步给出参数?(-p or --preserve)rsync 命令没有用过是吧?
- 你有尝试过自己去编译内核吗?现在比较主流的或者说长期支持的内核版本,能给出一个大概的版本号吗?(5.10.66)
- 其他的有没有从源代码进行编译安装的软件或者内核?他和操作系统的发行版里带的 Redis 包,相比较你做了哪部分的改动,或者说关注到了有哪部分的改动?
- 你自己有尝试去写过 Makefile 吗?
- 除了 Redis 之外,glibc 有没有尝试去更新过?像 OpenSSL 一些比较传统的?
- 比如你的 Nginx 是怎么安装的?
- 这些软件的一些上游,或者说官方的一些漏洞,或者是安全相关的你会关注吗?
- 像最近的一年、或者半年,有一些 Linux 提权,从一些普通账号变成特权 root 账号,这一部分有没有关注过?
- 安全这个领域平时有关注吗?比如说加密、解密啊。
- 比如说 RSA,他大概是什么样的一个原理能做到加密、解密、签名这一系列功能的?
- 对称加密你能给出几个加密算法吗?比如我们常见的哈希、MD5、SHA1、SHA256 这些,你自己有没有尝试过比如 MD5 大概他是怎么实现的?
- 给你一个文件,想看他的 checksum,怎么去校验,这个有尝试过吗?给出一两个命令?(md5sum、sha1sum)
- ssh 登录有一些密码认证的 public key 认证,这个 public key 怎么生成,怎么管理,这个有一些使用体验吗?(ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa)
- 除了 public key,除了密码,还有一些别的认证方式,这个有没有关注?
- Samba 大概是个什么东西?
- DNS 了解吗?能给出几种域名查询的类型吗?递归查询和迭代查询分别是什么?能描述一下迭代的过程吗?DNS 里除了像传统的 A、-A、CNAME 还有一些服务发现的,这个有没有关注?
- DNS 用什么端口?(UDP 53)
- TCP/IP 的三次握手过程能快速描述一下吗?除了协商窗口信息,还有一些其他的扩展选项,能给出一两个吗?
- MSS 表示什么意思,你能给出一个常见的值吗?(536)
- 刚才的描述是一个比较正常的情况,我现在做一个假设,我这个 server 端是我控制的,你这边是 client 端,server 端比如说我把 Nginx 80 端口进程 kill 掉了,等于我这边 80 端口已经没有真正的服务在跑了,但是机器还活着,这个时候我们再重新发起 TCP 三次握手建立连接,会发生什么?(RST)
题目 2
标题
tcpdump
题目描述
用 tcpdump 抓取从 192.168.2.1 访问本机 80 端口的完整数据包?
tcpdump -i en0 src host 192.168.2.1 and dst port 80
- 我再做一个假设,我现在 server 端是正常的,我拿 100w 台机器向 server 端发送 SYN,server 回复的 ACK 都收到了,但是这 100w 台客户端都不回复第三次 ACK,这种情况下是个什么场景?(SYN-Flood)怎么去预防这个攻击?内核参数有一个 SYN Cookie 这一块有没有关注过?
- 如果 server 端的 80 端口一会停一会开,客户端除了用抓包的形式去探测他是好的还是不好的,如果用一些命令,有什么样的命令可选择去探测我这个 80 端口开着?(talnet、nmap、nc)
- 网络地址掩码这块能简单地进行计算吗?
题目 3
标题
网络地址掩码
题目描述
添加静态路由并查看?
到 192.168.2.192~192.168.2.255 走 192.168.1.3
- 你自己有尝试搭建过 LVS 吗?我看你简历提到过 Nginx 这一块,如果要做高可用这一块,怎么样去做高可用?
- IPv6 这一块有学到吗?全 0 的情况下,可以去做缩写,这一块大概能补充一下吗,怎么个缩写规范?
- 可以给出一个 IPv6 公共的 DNS 吗?(2400:3200::1 2400:3200:baba::1)IPv4 的呢?(8.8.8.8)
- 咱们再往应用层绕一下,HTTP 协议请求头,可以给出几个请求头吗?比如说表示说我这个浏览器或者客户端支持压缩,这个怎么描述呢?和缓存有关的头能给出一两个吗?(Accpet、Referer、Cache-Control、Accept-Encoding、Host、User-Agent)
- 如果用 telnet 假设去访问 toutiao.com,能给出一个 telnet 之后,然后去写这个,模拟浏览器这个请求吗?
- 刚才我你到 curl,你有用到过 curl 吗?我用 curl 去访问
www.toutiao.com,这个过程可能有一些各个环节的耗时,其中有一个就叫 DNS 耗时,我想知道在这个过程中 DNS 占了多长时间,这个怎么获取?curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time_redirect}:%{time_pretransfer}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download} www.toutiao.com - 数据库这一块 MySQL 这种数据库使用的多吗?
题目 4
标题
MySQL select
题目描述
MySQL 数据库表 group 列出中 id 大于 10 于 99 的数据行数
- 你能描述一下 SQL 注入是什么吗?
题目 5
标题
文本文件比较
题目描述
当前目录两个文本文件 a 和 b
file a:
1
2
3
file b:
2
3
4
比较文件 a 和 b 显示只在 b 中出现的行内容
sort b.txt a.txt a.txt | uniq -u
- 你平时使用 Git 吗?比如说我们用命令的形式从主分支切出一个开发分支,然后做了一些改动、提交、然后再合回主分支,这个过程你能用命令给一下吗?
题目 6
标题
shell 后台执行
题目描述
bash 脚本:同时执行 a 和 b 等 a 和 b 都执行完执行 c
#!/bin/bash ./a.sh & ./b.sh & wait ./c.sh
反问:
- 刚才问的问题是工作中会遇到的吗
- 系统部在公司的定位是什么
- 面试岗位的职责
基本都不会,还给过了,当晚约了三面。。。
三面 2021/9/30 10:00 41min
- 自我介绍
- 介绍实习的项目
- 明年毕业是吧?除了 Java 对其他语言了解吗?计算机专业课程中最喜欢哪一门课程?为什么?
- 网络中一个 IP 数据包,我们只看 IP 层,这个数据包在经过路由器之后,他的包头有哪些变化?
- 在浏览器中输入一个网址到页面加载经过了哪些过程?
- 服务端有哪些组件来处理大规模的请求?
- HTTPS 建立连接的过程了解吗?对称加密和非对称加密分别用在哪个阶段?为什么传输的时候用对称加密?
- HTTP 2 了解吗?多路复用是怎么实现的?为什么 HTTP 1.1 的 TCP 连接不能实现多路复用而 HTTP 2 的 TCP 连接就可以?
- 1 亿个不同的 int 类型的正整数,如果在 1 亿个正整数中取 10 个最大的数,用什么数据结构和算法可以非常高效的实现?
- 介绍一下自己的项目
- 最近有看什么书吗?为什么想学 C++ 呢?Linux 内核这本书看的怎么样了?
反问:
- 你们团队是做什么的
- 字节跳动的服务都是部署在物理机上的吗
- 这个岗位需要学一些什么知识
面完之后 HR 跟我说过了,但是 HRBP 请假了,国庆之后约 HR 面。
HR面 2021/10/11 11:43 3min
- 你面试下来感觉怎么样?
- 对面试的团队有了解吗?
- 手里还有别的意向书吗?他们有说什么时候谈薪吗?
- 还在面试别的公司吗?
- 能来实习吗?
HR 介绍了团队是在北京,最后 HR 说面完加个微信,发一下身份证号,发了身份证号之后字节的意向书就可以发给你啦!我一愣,心想字节这么快的吗,难道不需要审批的吗?面完之后问了一下朋友,字节很多没有 HR 面,原来已经提前审批好了。发了身份证号之后 3 分钟收到了意向书!
#面试题目##字节跳动#
查看17道真题和解析