牛客网字节面经

5.26 一面(1小时)

  1. 自我介绍

  2. 项目

  3. tcp/ip,socket与七层协议的关系

  4. http是什么?http各种状态码

  5. 清不清楚http各种版本的历史?新版本中有哪些改进?

    http2.0相对于http1.1:二进制分帧层 / 服务端推送 / 首部压缩

  6. HTTP有哪些请求方法?区别是什么?get的限制?

    HTTP 方法 功能 描述
    GET 获取资源 当前网络请求中,绝大部分使用的是 GET 方法。
    HEAD 获取报文首部 和 GET 方法类似,但是不返回报文实体主体部分。主要用于确认 URL 的有效性以及资源更新的日期时间等。
    POST 传输实体主体 POST 主要用来传输数据,而 GET 主要用来获取资源。
    PUT 上传文件 由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。
    PATCH 对资源进行部分修改 PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。
    DELETE 删除文件 与 PUT 功能相反,并且同样不带验证机制。
    OPTIONS 查询支持的方法 查询指定的 URL 能够支持的方法。会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。
    CONNECT 要求在与代理服务器通信时建立隧道 使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
    TRACE 追踪路径 服务器会将通信路径返回给客户端。

    安全的 HTTP 方法不会改变服务器状态,也就是说它只是可读的。安全的方法除了 GET 之外还有:HEAD、OPTIONS。

  7. 为什么是四次挥手

  8. 如何检查访问资源的情况(检查->Network)

  9. Linux常用哪些命令

  10. 什么是僵尸进程,如何产生,如何消除?
    一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程。放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置。需要它的父进程来为它收尸,如果他的父进程没安装 SIGCHLD信号处理函数调用wait或waitpid等待子进程结束,又没有显式忽略该信号,那么它就一直保持僵尸状态

  11. 什么是守护进程?
    后台运行并且不受任何终端控制的进程(不希望其他用户使用该终端的过程中,收到守护进程的错误信息,也不希望终端键入的任何信号影响守护进程的运行)。通常情况下守护进程在系统启动时就在运行,习惯上守护进程的名字通常以d结尾(sshd)。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等

  12. crontab如何设置每分钟执行一次,如果程序执行时间超过1分钟怎么办

  13. 如何查看系统资源占用,有哪些指标?什么情况下负载过重

  14. Dockerfile中常见的关键字

  15. 如何进入Docker容器

  16. Docker如何实现主机和虚拟机间共享

  17. 【mysql练习】选课多于5节课的学生

  18. 【编程】按照区间分级别(二分法)

5.31 二面(45分钟)

这次面试也太不合常理了,不太像是一个技术面试,而是一个计算机理念面试,面试官会在简历上寻找漏洞,不断地挖掘,不断地深入,直到你面红耳赤答不上来。

  1. 你大学四年学到了什么?对哪些东西比较擅长?
  2. Docker容器为什么轻量级?用通俗的语言讲一讲(我讲了很多,但是面试官仍然不满意,并且说“不能用通俗的语言讲出来,说明你对于它的理解不够深刻”)
  3. 你对于操作系统内核了解吗?内核是由哪几个模块组成的?
  4. 为什么有系统调用?系统调用什么时候使用?你熟悉C的标准库吗?read和write函数有没使用到系统调用。
  5. 计算机网络有连接和无连接的区别是什么?请用通俗的语言讲一讲
  6. 请教我某一个我不会的知识?用通俗的方式解释?(讲的是WebGL图形绘制流水线)
  7. 简历上说你对python和pytorch比较熟悉,主要在哪些方面使用到了?
  8. visualpytorch项目中你觉得最困难的部分是什么?
  9. 你觉得作为一个985高校出来的学生,已经可以对齐清华北大,跟那些从蓝翔出来的专科生有什么区别?
  10. 你觉得作为计算机领域的人,最重要的特质是什么?(不是实现了什么,搭建了多少服务,运行了多少代码,踩了多少坑,而是要始终保持好奇心,理解技术背后的原理,想方设法去寻找答案,与最顶尖的人去交流)

面试官的评价:我在你身上看到很多优点,但也有很多不足的地方,但我们更希望能发掘你的优点,希望有一段时间去培养你。但是我们不太愿意招纯研究生,研一肯定有很多课程没时间,你一周来一天我们也不好给你安排任务。而且我们也不可能再等你两年时间,我们需要商量一下会不会给你提供这个机会。

6.2 收到感谢信

个人是认为收到感谢信跟技术与实力无关,可能更多的是其他方面的原因,有以下猜测:

  1. 字节跳动不愿意招纯研究生,最好研一快结束,研二再去投递,因为他们担心可能研一期间课程太过繁忙。
  2. 目前这个阶段来说,字节跳动不太缺人,并没有像前几个月那样把关比较松,现在他们可能希望能招到长期的实习生,进行慢慢培养。对于他们来说,实习生也分配不了重要的任务,短期的话招过去价值不大。
  3. 可能跟个人其他方面的表现有关,比如说个人的思想道德,品质,人际交流能力等等,他们不希望招思想比较消极的人。

感想

说实话,这次面试对我的打击挺大的😕。第一次参加大厂的面试并无法感觉到对方认真负责的态度。反常理的是:

  1. 二面全程都没有提出算法题,感觉好像是在以其他方式为难你,而不是真正想招你进去
  2. HR跟我打电话时说只有3次面试:前两次技术面试,最后一次HR面。但实际上第二次不像是技术面试
  3. 一面结束后,迟迟两天没有回复。我打电话给HR时,对方说事情比较多,正准备给我打电话,然后回复我通过了,给人一种不情愿的感觉。

另外,这一次面试是在之前5月上旬通过内推投递了三份简历,均没有通过的情况下进行的。之前投了3个算法岗位,但是一直没有得到回复。过了将近十天,在5月18日才有字节的HR打电话过来说之前的投递都被刷下来了。然后一个后端相关的岗位“捞”到我的简历。

最后,我还是希望大厂招人能真诚一些,不想招纯实习生就直接不要捞,不要为了刷KPI去搞面试。毕竟为了准备这场面试,我需要付出很多时间和精力。