百度一面
岗位 SRE
时间 7.22
这是我事后进行的面试复盘,其中的答案不代表我当时的回答
面试结果:当天收到二面通知
2021秋招面经汇总 : 面经汇总
我的其他文章 : 分享汇总
第一部分 项目有关
开发 API 需要注意什么,如何提供稳定的 API
是否发生过调用方调用接口失败的情况
发生过,我们的项目是外挂了个脚本去检查失败的情况
API 部署在哪,用了多少资源
我实习时候的项目,是部署到公司的云服务器上面的。。。
第二部分 计算机基础知识
一个进程想跑起来需要哪些硬件条件。
这个问题大家可以在评论区讨论一下。。。
- CPU
- 内存
如何衡量上述硬件的性能呢
- CPU
- 主频 CPU 的主频,是 CPU 的时钟频率,是 CPU 的时钟周期的倒数,因为时钟周期越短越好,所以频率越高越好
- 核心数
- 总线接口
- 缓存
进程和线程的区别和联系
- 进程定义
- 进程是具有一定独立功能的程序在一个数据集合上的一次动态执行过程
- 线程定义
- 线程是进程的一部分,描述指令流的状态,是进程中执行指令流的最小单位,是CPU调度的基本单位
- 区别
- 拥有资源不同
- 进程有自己独立的地址空间,线程共享所属的地址空间
- 进程拥有系统的独立资源,内存,IO接口,CPU等
- 调度方式不同
- 进程是操作系统调度的基本单位,线程是CPU调度的基本单位
- 系统开消
- 进程切换设计整个CPU环境的保存和新进程CPU环境的切换,而线程只需要保存设置少量寄存器内容,开销小
- 鲁棒性
- 多线程程序一个线程崩溃了,另外的线程就崩溃了,多进程程序,一个进程崩溃了对另外的进程没影响,多进程程序更加健壮
进程之间通信?
- 管道
- 命名管道
- 消息队列
- 信号
- 共享内存
- 信号量
- 套接字
RPC 了解嘛
- 远程过程调用,就是要像调用本地函数一样调用远程函数
TCP UDP 区别
- TCP 面向连接,UDP无连接
- TCP 可靠,UDP 不可靠
- TCP 只支持点对点通信,UDP支持一对一,一对多,多对一,多对多通信
- TCP 面向字节流,UDP 面向报文流
- TCP 有拥塞控制和流量控制,UDP 没有
- TCP 首部开销比 UDP 大
三次握手过程?四次挥手过程?
服务端大量 TIME_WAIT
- 设置 TIME_WAIT 状态的最大数量 net.ipv4.tcp_max_buckets
linux 熟悉嘛
软连接的用处
Linux 登陆之后特别慢,如何排查
TOP 命令各个字段含义
- 第一行:主要是主机信息
top - 22:27:06 up 50 days, 11:28, 1 user, load average: 0.11, 0.06, 0.01
分别是
系统当前时间
系统开机到现在经过了多长时间
当前在线用户数量
系统 1 分钟 5 分钟 15 分钟的 CPU 负载信息
-
第二行:主要是统计进程的数量和各个状态的数量
-
第三行主要是CPU信息
-
第四行是内存信息
-
第五行是交换空间
-
之后是进程的信息
top 命令的交互操作指令
- q 推出
- 空格刷新
- c 完全命令模式
- t 隐藏进程和CPU信息
- P 按照CPU使用率排行
- T 按照
- M 按照MEM排行
如何找到占用大空间的文件
比如找到一个500M以上的文件
find ./ -type f -size +500M
HTTP 状态码
- 2xx 成功
- 201 CREATED
- 204 No Content 请求成功但是不返回实体
- 206 Partial Content 进行了范围查询
- 3xx 重定向
- 301 永久重定向
- 302 临时重定向
- 304 Not Modified
- 4xx 客户端错误
- 400 Bad Request 请求报文中出现语法错误
- 401 Unauthorized 需要认证
- 403 Forbidden 请求被拒绝
- 404 Not Found 没有找到资源
- 5xx 服务端错误
- 500 服务端执行时发生错误
- 503 服务端停机中
GET POST 协议的区别
- GET是幂等的,即读取同一个资源,总是得到相同的数据,POST不是幂等的;
- GET一般用于从服务器获取资源,而POST有可能改变服务器上的资源;
- 请求形式上:GET请求的数据附在URL之后,在HTTP请求头中;POST请求的数据在请求体中;
- 安全性:GET请求可被缓存、收藏、保留到历史记录,且其请求数据明文出现在URL中。POST的参数不会被保存,安全性相对较高;
- GET只允许ASCII字符,POST对数据类型没有要求,也允许二进制数据;
- GET的长度有限制(操作系统或者浏览器),而POST数据大小无限制
浏览器输入域名之后的发生了什么
如何保证网站的可用性
- 冗余
- 负载均衡
算法题阶段
二叉树的层序遍历
模板题,广搜即可 LeetCode原题
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
from collections import deque
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
queue = deque()
queue.append(root)
res = []
while queue:
nodes = []
size = len(queue)
while size > 0:
size -= 1
tree = queue.popleft()
nodes.append(tree.val)
children = [tree.left, tree.right]
if any(children):
for child in children:
if child:
queue.append(child)
res.append(nodes[:])
return res
智力题
一个写字楼,如何评估一个写字楼里面有多少人办公
这个还真不知道答案
如何种四棵树,两两距离相等
这个是种成立体的就行,四棵树形成一个边和边相等的三角体,有一课树种二楼或者山顶。
SRE 主要是干什么的
SRE 网站可靠性工程师,主要工作是保障系统可靠性
工作内容
- 容量规划与实施 比如 要支持每秒X个请求,需要多少台机器
- 部署新的服务集群 比如 新的数据中心上线
- 冗余与容错
- 负载均衡
- 上线新的服务
- 监控
- 值班
- 救火
反问阶段
我今天面试有什么不足
- Linux不好
- 对SRE岗位的理解不足
写字楼的那个, 一个人都没在办公, 都在划水摸鱼, 😂
哈哈哈
写字楼什么鬼
智力题 不知道你高中是不是理科生,应该可以用标志重捕法?
万一写字楼里不全是办公的人怎么办。。。
还要考虑这个问题(当然出题的肯定没想到这样,普通情况。。。
(我是初中生
标志重捕不行吧,每个人下班时间不同。
我觉得可以看看楼下超市的营业情况?大概卖了几瓶矿泉水,然后除点概率(那么概率是多少呢,阿这
就是随机给100个人标注,然后查看一楼层的人有多少个被标注了,这种。。。。
哈哈其实我也不知道正确答案
当时面试时候,没想出来 场面一度很尴尬
“第三个人被录取了”