头条研发秋招补招-后端开发工程师视频面试杂记

引子

秋意浓

面试 (~60min)

一开始就被俩算法题骑脸, 大概占了整个面试一半的时间

  1. 查找第一个缺失的正整数。 时间复杂度O(n) ,空间复杂度 O(1)
    Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-1,1] Output: 2 Example 3: Input: [7,8,9,11,12] Output: 1Example 1: Input: [1,2,0] Output: 3 Example 2: Input: [3,4,-1,1] Output: 2 Example 3: Input: [7,8,9,11,12] Output: 1

  2. 给定一个链表,每隔k个元素做一次反转
    Example: Inputs: 1->2->3->4->5->6->7->8->NULL and k = 3 Output: 3->2->1->6->5->4->8->7->NULL. Inputs: 1->2->3->4->5->6->7->8->NULL and k = 5 Output: 5->4->3->2->1->8->7->6->NULL. Example: Inputs: 1->2->3->4->5->6->7->8->NULL and k = 3 Output: 3->2->1->6->5->4->8->7->NULL. Inputs: 1->2->3->4->5->6->7->8->NULL and k = 5 Output: 5->4->3->2->1->8->7->6->NULL.

全部没答上, 基本操作, 面试官赶紧说我问你几个问题吧(-_-||)

  1. 问: 浅拷贝和深拷贝的区别是什么 答: 我不知道具体的原理, 我认为就像软链接和硬链接一样
  2. 问: Python 的垃圾回收有了解吗, 就是 GC 答: PHP 的我比较熟一点, 是基于 ref_count 做的 追问: 如果有互相引用的情况怎么办 答: 没有了解
  3. 问: 有了解过乐观锁和悲观锁吗 答: 乐观锁我比较熟悉, 以前做项目开发经常用到, 就是在 update 操作之前先查一下该数据当前的状态并且作为此次 update 的 where 条件, 悲观锁只知道一点点概念, 不是很熟
  4. 问: 看你对 web 比较了解, 请讲一下 HTTP 状态码 2xx 3xx 4xx 5xx 的含义 答: 200 ok, 3 开头的大多是跳转, 4 开头的大多是 webserver 层的错误比如找不到文件, 5 开头的大多是 backend server 层的错误比如 fpm 内存满了
  5. 问: 发起一个 HTTP 请求都有哪些过程 答: 首先会去查请求域名的 dns 然后向对应 ip 发请求比如 get 或者 post 报文
  6. 问: 那 get 和 post 有什么区别 答: 跨域, 浏览器历史记录, 参数长度限制, 应用(涉及安全要求比较高的场合用 post)
  7. 问: tcp 的三次握手和四次挥手在什么情况下会发生 答: 建立连接和断开连接的时候
  8. 问: 四次挥手你说一下 答: 首先需要断开连接的一方(下称客户端)发送第一次挥手, 收到请求的一方(下称服务器端)回复一个请求, 等待数据传输完毕后再回复一个请求, 然后客户端也回复一个请求之后便断开连接
  9. 问: 中间有个 time_wait 状态是干嘛用的 答: 因为 tcp 是基于网络通信不可靠这个原则, 当超时了则丢弃这个请求, 这就是 time_wait 的作用
  10. 问: 看你简历写了 lnmp, Linux 你都用过哪些 答: Linux 下的 php 生态, 从 Nginx 到 fpm 都很熟悉
  11. 问: 你配置过 Nginx 的 upstream 吗, 如果有多个 upstream 他是怎么选的 答: 用过, 平均分配 追问: 只有公平分配吗 答: 是(这里答错了 :P) 追问: 某个 upstream 挂了他会怎么处理 答: 请求不会落到这台 upstream, 至于重试算法我没有了解
  12. 问: Linux 下面的话你用过哪些常用的命令 答: 最常用的 ls, ll, apt, supervisor 追问: 网络相关的命令用过吗 答: curl. wget 只有这些了 追问: 查看网络端口相关的呢 答: 没有了解 追问: 那你抓包也没用过咯 答: 我一般是在 Windows 下面用带 GUI 界面的软件抓包 追问: 用哪个软件 答: fiddler 追问: 是因为在腾讯的原因吗 答: 我去腾讯之前就已经在用 fiddler 啦
  13. 问: 最后再问你一个问题吧, 有一千瓶水有一瓶有毒, 要用最少的兔子, 最少的次数去找出这瓶有毒的水 答: ……..(这里我首先想到是二分查找, 询问面试官是否是考察此算法, 被告知不是, 又想了一会放弃了)https://blog.csdn.net/u010278318/article/details/8883531

后记

我大概是今年春招投 tx 的时候一并投的头条, 当时一点消息都没有
结果来了个这么一出, 只能说是好事多磨 xD?