原文转载自「刘悦的技术博客」https://v3u.cn/a_id_183
2021 年,对于正在找工作的敌人来说,笼罩在新冠肺炎疫情之下,往年的待业季显得更加具备挑战性,更有意思的是,每当这个时候,各种面试教训分享就如同过江之鲫个别,俯拾皆是,因为例子过多, 兹不细举。然而这些面试教训大部分都停留在实践阶段,这就造成了一个问题:实践和理论,到底有多大出入?我国现代小名仕曾文正公已经说:“天下事,在局外呐喊谈论,总是有益,必须躬身入局,挺膺负责,方有成事之可冀。”革命先烈李大钊学生也曾感叹:“凡事都要好高鹜远去作,不驰于空想,不骛于虚声,而惟以求真的态度作虚浮的时间。以此态度求学,则真谛可明,以此态度做事,则功业可就。”所以本次咱们来进行一次实在的线上面试,正所谓空谈误国,实干兴邦,可能测验真谛的也只有实际这一条路。
首先关上某驰名垂直招聘 app 软件,寻找咱们的猎物:
能够看到,咱们找到了北京某企事业单位的高级 python 开发岗位,正所谓不打无筹备之仗,在正式面试之前,咱们须要对该岗位进行剖析,尝试揣测出面试中可能会被问到的问题,首先该岗位要求有 flask/django/tornado 的教训,那么能够必定,web 开发必然是次要工作,尤其是 flask,很有可能是该职位的主力框架,所以咱们须要筹备 python 根底、网络协议、以及 flask 和 django 的一些相干常识用来应答。其次,要求对 mysql/pgsql/es/redis 等数据库有应用教训,那么能够揣测出对数据库要纯熟应用,特地是 pgsql,要筹备 pgsql 与 mysql 的异同,同时留神到文中提及 es,那么对于全文检索相干的知识点也须要有所准备,最初 redis 相干的 nosql 数据库知识点也必须坚固,以备不时之需。最初,该职位提及须要相熟 linux 常用命令以及 docker 生态体系,同时有对于 selenium 自动化测试教训。由此能够推断出:该岗位有可能须要参加运维或者部署工作,同时也有很大机会参加到自动化测试项目中去,所以对于 docker 和 selenium 相干知识点的筹备迫不及待,除此之外,如果还能筹备一些深度学习的案例和我的项目那就更是精益求精了。
万事俱备,择一黄道吉日,咱们开始面试:
面试官:请您做一下自我介绍?
面试者:您好,我是 15 年毕业的,在内蒙古民族大学学的计算机,毕业之后呢,教了两年的高中计算机课程,干了两年多当前在咱们本地找了一家公司做微信小程序开发,而后咱们这个前端是用的这个 mp-vue 框架,后端就是用 Django,写的是一个 C 端的电商平台,最近日活维持在 5 万左右。
我次要负责的就是后端的 Django 的一些接口逻辑开发,次要和业务打交道,另外也接触过继续交付部署,咱们采纳的是这个容器式部署 (docker),还有灰度的测试以及监控以及一些日常的 sql 语句提取数据小 bug 修复这类的工作,最近就是我看咱们公司的这个职位里要求这个 selenium,
最近我也钻研了一下 selenium,并且写了一个小脚本,就是能够自动化上传表单数据。这就是我最近的一些工作。
其实自我介绍最禁忌的就是说废话,比方姓名、年龄这些简历中都有体现,所以咱们要说点简历中没有的,比方本人的我的项目过往,获得的成就与建树(日活 5 万,日活是一个十分重要的指标,对于增长前期的产品,一个要害的晋升指标就是做沉闷,尽管 5 万日活还无奈变现,但它是一个从 0 到 1 的过程,是百万日活的根底),甚至有意无意的,议论的技术点能够往岗位形容上歪斜,比方岗位形容中呈现过的 django、部署、docker、selenium 等技术,都能够在面试的自我介绍中再次出现,暗示本人与该岗位珠连璧合,井水不犯河水。须要留神一点的是,面试过程中最好全程应用敬语:您,以示尊敬。
面试官:好的,你简略说下这个 es 全文检索,
面试者:es 是这样,就是过后咱们就是想做一个这个检索性能嘛,然而这个老板要求是他这个响应工夫要比拟短,所以咱们就采纳这个 es,es 自身就是他就是这个基于内存它的这个响应速度比拟快,第二它是基于这个倒排索引,速度上要比那个 mysql 的那个正向索引,io 操作要损耗的小一些,所以过后我是联合结巴分词不晓得您听没听说过?
面试官:略有耳闻。
面试者:咱们能够了解为,将用户搜寻的语句进行分词操作,给它切词切完词之后呢,我依照词性做这个索引,我就是举个简略例子,比如说他要搜这个超薄笔记本,但实际上超薄和笔记本一个是形容词,一个是名词,那其实我是把这个词性作为这个搜寻等级,形容词优先级为 2;名词作为优先级为 1。在 es 里做那个分层索引,依照优先级来去检索数据。
开始正式进入技术面试,首先面试官问了岗位形容中呈现过的技术点:es 全文检索,咱们能够先简略介绍一下我的项目背景、底层原理,同时在适当时候,进行反诘,反诘的意义在于,防止干燥的一问一答模式,可能减少互动,调节氛围,最初在技术细节上,最好举例子,而不是泛泛而谈,这里既是以用户搜寻“超薄笔记本”为例子,具体论述后端 es 的检索策略,对于检索策略,其实实质上探讨的是搜索词权重(术语权重,也称作 Term Necessity,Query Term Weight)问题,属于检索词解析的一部分。相熟倒排索引的敌人都晓得,文档通常以词的粒度建设索引。所以对于词的解析,在检索解析中属于十分重要的工作,其中,不仅仅包含正确辨认指标词,还包含围绕指标词的各种特征提取,所以,当检索词文本中蕴含不止一个词时,问题的复杂程度就产生指数级的增长。用户的搜寻有更具体的需要,最直观的体现于文本长度增长,围绕指标词有了更多的补充、限度。同时语序也相较文章类文本更加自在,解决方案就是通过结巴分词对检索词进行切词操作,当检索词存在多个词时,每个词的重要水平是不同的,在基于词召回的根底上,对词设立优先级(基于词性),以此达到近似用户原始需要的语义级别。
面试官:那请再谈谈零碎的登录模块。
面试者:登录模块一开始做了一个绝对简略的校验性能,那么后续我是做了一下优化,就改成了这个 openldap,不晓得您听没听说过,就是一个基于层级架构的对立管理系统。
面试官:如同没有据说过。
面试者:它有点像 es,检索速度十分快,也是便于对立治理,也是为了便于扩大,避免当前有多个我的项目即陆续上线反复造轮子,同时,B 端如果新上线一些我的项目的话,不便我做 single sign on,就是单点登录。这也是我本人集体后续革新的一个小零碎,能够了解为对立认证,就是把登录这个货色作为微服务给它抽离进去。
登录模块对于大部分利用来说,都是最根底的模块。看似简略,却与相当多的产品性能用户应用场景交错在一起,受到产品类型、用户定位、业务逻辑、应用场景、用户操作等不同因素影响,所以此时咱们须要回升产品高度,防止流水账式的形容,而是点出对立认证 (openldap) 和微服务架构,同样应用反诘来试探对方的常识体系深浅,最初基于对立认证体系,点出最终性能实际:Single Sign On(单点登录)。
面试官:ok,理解,你们后盾权限治理是怎么设计的?用过 xadmin 吗?
面试者:后盾权限零碎是咱们是本人研发的,当然了,一开始技术选型的时候也思考过 xadmin,然而它外面零碎设计您应该也理解过,就是它自身二开的时候,门槛比拟高,因为逻辑设计的比较复杂,如果说我想去改他的模板,或者说我想在他两头键里边做一些扩大,有点麻烦,所以我是独自把他独自抽出来本人做的。
面试官:能具体谈谈吗?
面试者:我是革新了 xadmin 的那个权限零碎就是用了一套位运算的零碎,我不晓得您理解没理解过位运算。
面试官:就是相似二进制的运算?
面试者:对,我是将不同的零碎节点的对应到每一个二进制位的位上,而后我针对用户带过去的权限节点,对相应的位做这个位与运算,来获取相干权限,进行受权操作则应用位或运算。
其实对于权限零碎,无非就是权限模型的应用(acl/rbac/abac),然而如果你在权限设计的模式上做出一点翻新,那么就像黑火药时代里忽然诞生的核弹一样,肯定会给面试官留下深刻印象,比如说计算机最底层的根底:位运算。家喻户晓,运算速度快、效率高、节俭存储空间、对权限管制非常灵活。所有语言都提供了位运算符,包含 Python,咱们能够在不同语言实现的零碎、甚至数据库中应用位运算实现对用户权限的治理。当然了,位运算也会带来一些局限性,随着权限码减少,数据长度也相应的增长。这就要求权限码不能超过计算自身运算长度,在数据库中存储权限码时,权限码长度也不能的超过所应用数据类型。如:在 32 位零碎中,权限节点数量不能多于 32 个。而如果基于 mySQL 数据库的 BIGINT,其存储空间为 8Byte,应用 BIGINT 存储存储码时,权限数不能多于 64 个。
面试官:好的,能说说到职起因吗?
面试者:我是这么思考的,我其实就是感觉人嘛,应该是往更高的谋求去倒退,更大的环境,更大的市场来锤炼本人,对吧?
面试官:嗯。
面试者:当然这是我集体认为啊,而且当初我感觉当初的情景是逆水行舟, 逆水行舟,因为当初北京疫情还是挺重大的,然而我感觉这是我的真正的机会,我应该抓住。
面试官:好的,那你 4 号能来公司吗?
面试者:能够,我买好机票了曾经。
面试到了这个阶段,基本上技面曾经完结,剩下就是人资问题了,对于到职起因很多敌人喜爱说诸如公司开张、搬迁、裁员等是由,但实际上,这些理由并不是面试官“想”听的,那么从人力资源管理的角度登程,面试官到底想听点什么呢?他想要一些被动而侧面的起因,而不是一些被动的起因,因为裁员、搬迁和开张这些都是被动的,你“被迫”来到原公司。所以说白了,他须要你给他一点企图心,企图心是指一个人做成某件事情,或达成既定目标的志愿。企图心的强烈水平,取决于志愿的大小,如果志愿越强烈,阐明企图心越大,胜利的可能就越高,所以,天经地义的,你须要向他证实你是带着企图心来面试的。
面试官:好的,那回头见?
面试者:好的,十分感谢您给我这次面试的机会
面试官:别那么客气,88
面试者:好的,再见
最初,咱们须要以一个感激来完结整个面试,无论面试胜利与否,一个真挚的致谢会给面试官留下好的印象,感激对方的同时,也感激本人的致力。对于整个面试流程的视频,请移步:
结语:就像《双城记》外面写的那样:这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚昧的时代;这是信奉的期间,这是狐疑的期间;这是光明的节令,这是光明的节令;这是心愿之春,这是悲观之冬;人们背后有着各样事物,人们背后赤贫如洗;人们正在直登地狱,人们正在直下天堂。在这个疫情出尔反尔的年代,有时让人们感觉有有限期待,有时又让人陷入有限的失望,但无论如何,咱们总要直面艰难,开启新的征程,与其坐而论道,不如起而行之,在生活中学会生存,在面试中学会面试。
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_183