NetEase interview

Posted by Keal on March 10, 2021

网易

  1. 如何解析http报文?如何判断结束?如何知道包的大小?
  2. http头部包含了哪些内容?
  3. linux系统的权限是如何分配ID,文件系统是怎么样的,操作文件需要怎样的权限.写日志时如果把文件删除会怎么样?
  4. 虚拟内存的实现?
  5. 一堆数据,如何找出最大值最小值. 如何找出前N大的值. 算法实现, 复杂度.

腾讯

事情的开始,是11.15早上,接到了腾讯HR的电话,约了11-16晚上的面试。

毕竟腾讯是我在国内最喜欢的公司, 国内几个大厂里,阿里给我的感觉像个成熟大叔,什么都懂但是很无趣。字节跳动像个蛮劲很大的年轻人,只有腾讯给我的感觉是年轻自由且开放的。虽然还没有打算跳槽,但是我没法拒绝腾讯的第一次邀请.

接到面试后,整个人的状态就变了。变得紧张,兴奋,和担忧。后果是引发了情绪性胃炎,直到我码字的这一刻,胃仍然在隐隐作痛。患得患失是不行的.

说说跟面试相关的吧。

接到面试邀请后,之后收到HR发来的短信邀请码,在微信公众号腾讯招聘中需要用到这个邀请码确认接受面试。

面试方式是通过腾讯会议,记得升级你的腾讯会议,因为期间要用到一些功能可能在新版本才有.(比如打开外部插件IDE)

面试重点内容。

  1. 自我介绍
  2. 找你最熟悉的项目,讲一遍整体的架构,以及各种细节问题。
  3. redis的数据结构
  4. redis的集群用过吗,故障时的数据丢失怎么办,主节点故障怎么办。
  5. 为什么要用celery
  6. 为什么要用消息队列
  7. websocket相比http的特点,为什么要用websocket
  8. websocket是如何建立连接的
  9. golang的gc
  10. golang的channel,channel的操作和注意事项
  11. channel一定要关闭吗?
  12. 编程题 1个channel, 两个协程,一个读,一个写,打印1,5,4,3,2.

自我感觉

以高要求来说,如果满分100,我应该最多70,大致60分左右吧。主要有两个地方回答的有些问题,

1是redis的哨兵模式在主节点挂掉之后的新主节点选举没能确认是用到了raft算法。(只是提到了有可能是这个)

2是编程题我已经不知道怎么看待自己了. 这里详细说下我犯的错吧,加粗警示

一开始是腾讯会议版本不对,没法用IDR,面试官让我用聊天框输。我在聊天框里输入的东西简直惨不忍睹

chan的声明把关键字chan写成channel。 函数传参对chan使用了一个取指针符号,以及func(c chan int(5))这种我也看不懂的传参。。

特别是在争取到面试官同意使用本地IDE的时候,依然没有办法很好的去编写。最后只是口述了一下

主观当然可以为自己解释是因为最近都在写python相关的内容。一时没反应过来,但是客观评分会告诉你,you are fired。

面试完后,写了个能运行的解,就这样吧。下次继续努力。共勉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package main

import "sync"

var ch = make(chan int, 5)
var wg sync.WaitGroup

func writec(c chan int) {
   for _, x := range []int{1, 3, 5, 4, 2} {
      c <- x
   }
   wg.Done()
}

func readc(c chan int) {
   var i int
Loop:
   for {
      select {
      case i = <-c:
         print(i)
         if i == 2{
            break Loop
         }
      }
   }
   wg.Done()
}

func main() {
   wg.Add(2)
   go writec(ch)
   go readc(ch)
   wg.Wait()
   close(ch)

}

总结

  1. 不要患得患失
  2. 为喜欢的事情做好充足的准备
  3. 面试不要机械问答,多拓展.
  4. 手写编程要熟练

星维互动(Python)

看介绍以为是做AI+广告的,面试结尾问了后了解到是新开的项目做AI agent本地化部署的.

面试过程: 笔试+面试

笔试题

  1. 写一个记录函数执行时间的装饰器
  2. asyncio的执行顺序
  3. 根据条件写出一个sql的查询语句
  4. fastapi写一个路由方案
  5. 算法题,从一个列表中选出只出现一次的数字,并且假设其他都只出现了2次. (分别使用字典和位计算,实现O(n)和O(1))的空间复杂度

面试

自我介绍

网络协议:

  1. TCP和UDP的区别
  2. 应用层有哪些协议
  3. HTTPS和HTTP的区别, TLS的具体实现
  4. HTTP请求头有哪些

Python语言:

  1. Python语言特性,适合干什么
  2. 迭代器和生成器
  3. asyncio的实现. 事件循环的作用
  4. 协程和线程的区别, 协程何时交出控制权,何时重新执行 (两个队列,Ready和Wating)
  5. gevent的异步实现 (Monkey patch)

其他:

  1. 说说你的优点和缺点
  2. 有没有独立负责过一个项目的从0到1
  3. 对加班怎么看(目前公司加班比较严重)

总结

面试官似乎没准备题目,想我多讲讲,我一下也没反应过来,我预计的是他问我答,没想到这次更多的需要主动介绍.属于聊到什么问什么.这块准备的其实也不是很充足. 需要再补充一下.