今天面试的时候遇到的,我自我介绍完了之后开始问我 python 装饰器语法/垃圾回收/不可变数据类型
第一个我稍微说了两句
第二个我说不知道 python 怎么处理的,讲了下 go/c#怎么垃圾回收
第三个问题我懵逼了,从来没听过这种说法。我说没听过,可能是类似于其他语言里面的值类型引用类型?然后稍微讲了两句。
然后面试官的语气中带着点失望:“这种基础问题都回答不上来啊”。我就说这些问题考察应届生可以,问我我确实答不上来,要不聊聊项目相关的或者聊聊功能设计?面试官表示这是其他人负责的,他这块只问技术原理。然后我跟他说了几句片汤话就主动结束了面试。写了几年 python 连这些基础都不知道确实有点惭愧,活该我失业找不到工作!不过话说回来,大家觉得8 年经验的全栈开发,技术面过程中面试官应该提什么样的问题?
不过他问什么问题我觉得这是他的一定程度内的自由,如果因为他问的问题导致面试这个事情出现很多问题,我相信公司内会有人找他谈话的。
听见这句,不管你什么水平,你的面试官一定很没水平。
如果确实有用的东西了解以下就行,不用过多从自己身上找原因。
要我的话,如果你 py 是主语言,我大概会问这些难度的东西:
threadlocal 实现
asyncio 的 task 的线程安全
timezone native 和 pytz 的坑
pydantic 和 dataclass 的行为区别
Annotated 和 annotation
contextvar 为什么是 asyncio 安全的
给一个用 LOAD_FAST 优化的用例
cffi 和 raii
poetry 、pdm 和 uv 的行为区别
WSGI 和 ASGI 的中间件
这才只是面 3-5 年会问到的难度,8 年的 py 技术岗的技术面怕是要连 six 、future 和 past 甚至是 asyncio 发展史和 gevent 都问了
而且上面的全都不八股文,全是我实际用到过的东西
第一个装饰器问题,讲讲怎么实现的,讲讲你的经验里实际应用到这个是个什么场合,说说适配器模式之类的。
第二个垃圾回收问题,讲得出引用计数、可达性分析,能顺便说两句新生代老生代,差不多了。
第三题真的是傻逼题。