某个外包公司的面试总结

缘起

无非就是“又”失业了,重新开始找工作,原本还不想招惹外包公司,无奈行情不好,外包工作也是工作呀,于是乎,就定了某个外包公司的面试,第一面:外包公司的技术面。

心得体会

主要问题都是跟 aws 有关系,这个岗位的甲方是个外企,肯定重度使用 aws。而且还在用 aws 的 eks 服务。

感觉面试官的视野还是很重要的。

几个具体问题

有个细节:腾讯会议面试,面试官几个人,可能是三个,首先特意让我把视频打开,于是我打开了,但是对方并没有打开。好吧,我是求职者,不对等也正常。

但为什么面试需要让面试者打开视频呢?这个不太明白,也许相关 HR 会比较清楚这一点。

关于 eks 的 ingress

问我 eks 里的服务通过 ingress 暴露出去,然后数据包是怎么从外网到 pod 的。

这个题我答的不好,前东家其实差不多就是这个架构:nginx-ingress,然后外面是 aws 的 LB,我一直在解释外网流量到 aws 的 LB 设备之后然后是转到 eks 集群的 node 节点的某个 tcp 端口,我的意思是,其实服务最终是通过 nodeport 透出去的。

上面我说的这个大概是基本上没太大问题的,但是人家问的应该不是这个。:(

其实上面我提到的 nodeport 透出去的服务正是 nginx-ingress(或者是 nginx-ingress-controller,具体忘了,我得再看看 nginx-ingress)

关于被 nginx 反代的服务如何获得客户端的真实 IP 的问题

这个其实我比较熟悉,http 基本协议嘛。

我说这个简单,在反代的 nginx 配置里将 client ip 直接写入一个特定的 http 头,然后真实的服务里再把这个头取出来即可。

其实这个回答完全没毛病,我之前有项目就是这么干的。但面试官却感觉好像抓住了什么一样拼命问我到底是哪个 http 头?搞得我都有点上头了,我于是说:“哪个头不一样吗,只要跟后端协商好了就行了”。还被追问,还问一般标准是哪个头,于是我只能说 X-Forwarded-For,于是面试官认可了。

我其实没有细说为什么要另外弄一个头,这是因为客户端访问服务,中间可能会过 n 层代理,理论上每一层都会且必须要往 X-Forwarded-For 里写东西,但实际上,守规矩的人有,但绝对不是全部!于是我们的逻辑就是单独再搞一个 http 头,算是有点私有协议的意思,自己用,这样感觉比直接用 X-Forwarded-For 更靠谱一些。

Jenkins 怎么做代码触发自动构建(CI)

某个面试官问的,我当时回答:我不知道。我真不知道,或者我们曾经也有用过这种功能,但因为具体不是我配的,我就没了解到。但我知道,这个是绝度可以实现的,大致猜想是通过 webhook 之类的东西来做就可以。

我又说,我们有时并没有用 Jenkins,面试官就逼问:“没有 Jenkins 怎么做 CI/CD 呢?”,我当时就笑了,说:“我的好几个前司,项目的 CI/CD 是直接在 gitlab 里做的。”(他可能不太清楚 gitlab 本身就有 CI/CD 的功能)。而我恰恰由于要维护这个,曾经大概看过相关配置。

估计他也不知道 github-action 之类的东西吧。

关于 serverless

我回答说之前的某司,我用过 aws 上的什么服务来着(我真是这么说的,我忘了那个叫 Lambda 了),用那个写了个 python 程序,定时执行一些操作。那个我理解就是 serverless

用过多少 aws 的服务

于是我就说了一堆,但的确好多服务我忘了名字了,我只能简单介绍下这个服务是干啥的。我估计我用的好多服务面试官们也没用过,:)。这个很正常,就像他们用过的服务有些我也没用过一样。

eks 中的服务暴露出来的几种方法

我居然只回答出 nodeport 和 ingress 两种,连 LB 设备这个都忘了。:(

结果

最终的结果,自然是挂了呀。:(