原文转载自《刘跃的技术博客》https://v3u.cn/a_id_1832021年,送给朋友们正在找工作的人,快来表示,新冠肺炎疫情之下,今年的就业季更是充满挑战。更有意思的是,这时候各种面试经验分享就像江河里的鲫鱼,比比皆是,因为例子太多了,就不一一列举了。然而,这些面试经验大多停留在理论阶段,这就带来了一个问题:理论和实践到底有多大区别?我国古代名臣曾文正公曾说:“天下之事,在局外呼喊议论,总是无用的,必须进局内负责,方能有希望。”成功。”革命先烈李大钊先生也感叹:“凡事都要脚踏实地,不凭空想,不凭虚妄,唯有求真务实的态度去努力。如果你学习抱着这种心态,你就会知道真相,带着这种态度做事,你就会取得成功。”所以这次我们要进行一次真正的线上面试。俗话说,空谈害国,实干兴邦。检验真理的唯一方法就是实践。首先,打开一个知名的垂直招聘app软件,寻找我们的猎物:如您所见,我们在北京某企事业单位找到了一个高级python开发职位。俗话说,不打无准备之仗。分析职位并尝试猜测面试中可能会问到的问题。首先,职位需要有flask/django/tornado的经验,所以可以肯定的是web开发肯定是主要工作,尤其是flask,很可能是该职位的主要框架,所以需要准备python基础,网络协议,还有flask和django的一些相关知识来应对。其次,要求有mysql/pgsql/es/redis等数据库的使用经验,因此可以推断,必须熟练使用数据库,尤其是pgsql,pgsql和mysql的异同点一定要有所准备。检索相关的知识点也需要准备。最后,redis相关的nosql数据库知识点也要巩固一下,以备不时之需。最后,职位提到需要熟悉Linux常用命令和docker生态,有selenium自动化测试经验。由此可以推断,该职位可能需要参与运维或部署工作,同时也有很大机会参与自动化测试项目,因此准备docker、selenium相关知识点刻不容缓。如果能准备一些深度学习的案例和项目,那就更锦上添花了。一切准备就绪,择吉日,开始面试:面试官:请介绍一下自己好吗?面试官:你好,我是2015年毕业的,在内蒙古民族大学学的是计算机专业。毕业后,我在高中教了两年计算机课程。工作了两年多,在我们当地找了一家公司做微信小程序开发,然后我们前端用的是mp-vue框架,后端用的是Django。是C端电商平台,近期日活维持在5万左右。我主要负责后端Django的一些接口逻辑开发,主要是处理业务,也有接触持续交付部署,我们用的就是这个容器部署(docker),还有灰度测试监控和一些日常的sql语句提取数据并修复小错误。最近看到我们公司这个职位需要这个selenium。最近也在研究selenium,写了一个可以自动上传表单数据的小脚本。这是我最近的一些作品。其实自我介绍最忌讳的就是胡说八道,比如名字,年龄,这些在简历中都有体现,所以我们不得不说一些简历中没有的东西,比如我们过去的项目,成绩和成绩(日活5万,日活是一个很重要的指标。对于处于成长后期的产品,一个关键的提升指标就是活跃。5万日活虽然无法实现,但它是一个从0到1的过程,这是百万日常活动的基础),甚至有意无意地,讨论的技术点可以向职位描述倾斜。比如职位描述中出现过的django、deployment、docker、selenium等技术,都可以在面试的自我介绍中再次出现,暗示你是这份工作的绝配,相得益彰。需要注意的一点是,在整个面试过程中最好使用敬语:你,以示尊重。面试官:好的,简单说一下es全文搜索。面试官:es是这样的。我们当时就是想做这个搜索功能,但是老板要求他的响应时间要短一些,所以我们就用这个es,es本身是基于内存的,响应速度比较快。二是基于倒排索引,比mysql的正向索引速度更快,io操作损失更小。所以当时我就是把口吃和分词结合起来。不知道大家有没有听说过?采访者:听说过一点。面试官:我们可以理解为对用户搜索的句子进行分词操作,分词后我会根据词性做这个索引。我只是举个简单的例子,比如他要搜索这个超薄笔记本,但实际上一个是形容词,一个是名词。其实我是用这个词性作为搜索级别的,形容词的优先级是2;名词的优先级为1,在es中做层级索引,按照优先级检索数据。开始正式进入技术面试,面试官首先问的是职位描述中出现的技术要点:es全文搜索,我们可以简单介绍一下项目背景和底层原理,同时,在提问的时候反问适当的时候。反问的意义在于避免无聊的问答方式,可以增加互动,调节气氛。最后,在技术细节方面,最好给出例子,而不是泛泛讨论。这里以用户搜索“超薄笔记本”为例,详细说明后端关于检索策略,讨论的本质是搜索词权重(termweight,也称为TermNecessity,QueryTermWeight),这是搜索词分析的一部分。熟悉倒排索引的朋友都知道,文档通常以词为粒度进行索引。因此,词的分析是检索分析中一项非常重要的工作,它不仅包括对目标词的正确识别,还包括围绕目标词的各种特征提取。因此,当搜索词文本包含多个词时,问题的复杂度呈指数级增长。用户的搜索有了更具体的需求,最直观的体现在文本长度的增加,围绕目标词的补充和限制也更多。同时,词序比文章正文更自由。解决方法是通过口吃分词的方式对搜索词进行分词。当搜索词中有多个词时,每个词的重要性是不同的。基于单词召回另一方面,为单词设置优先级(基于词性),从而达到接近用户原始需求的语义级别。面试官:那请说说系统的登录模块。面试官:login模块一开始是一个比较简单的验证功能,后来做了一些优化,改成了这个openldap。不知道大家有没有听说过,它是一种基于层级结构体系的统一管理。采访者:好像没听说过。面试官:有点像es,检索速度非常快,也方便统一管理和扩展,防止以后多个项目相继上线,重复造轮子。同时,如果B端上线了一些新的项目,方便我做singlesignon,就是单点登录。这也是我后来亲自修改的一个小系统。可以理解为统一认证,就是把登录这个东西抽取出来做成一个微服务。登录模块是大多数应用程序最基本的模块。看似简单,却与相当多的产品功能和用户使用场景交织在一起,受到产品类型、用户定位、业务逻辑、使用场景、用户操作等不同因素的影响。而是点出统一认证(openldap)和微服务架构,用反问来测试对方知识体系的深度。最后,基于统一认证体系,指出最终的功能实践:单点登录(SingleSignOn)。面试官:好的,我明白了,你们后台的权限管理是怎么设计的?你用过xadmin吗?面试官:后台权限系统是我们自己开发的。当然,我们一开始选择技术的时候也考虑过xadmin,但是你也应该知道里面的系统设计。也就是在第二阶段推出的时候,门槛是比较高的,因为逻辑设计比较复杂,如果我要改他的模板,或者想在他的中间按钮做一些扩展,有点麻烦,所以我把他单独提取出来,自己做。采访者:能详细说说吗?面试官:我修改了xadmin的权限系统,使用位操作系统。不知道大家是否了解位运算。面试官:是类二进制操作吗?面试官:是的,我把不同的系统节点对应到每个二进制位,然后我针对用户带来的权限节点在对应的位上做这个位与运算,得到相关的权限,授权操作用的是按位或操作。其实关于权限系统,无非就是使用了权限模型(acl/rbac/abac),但是如果在权限设计的形式上稍作创新,那么就会像核弹一样黑粉时代突然诞生,面试肯定给到你。官方印象深刻,比如计算机的底层基础:位运算。众所周知,它运算速度快,效率高,节省存储空间,在权限控制上非常灵活。所有语言都提供位运算符,包括Python,我们可以在不同语言实现的系统中使用位运算符,甚至在数据库中也可以使用位运算符来管理用户权限。当然,位运算也会带来一些限制。随着权限码的增加,数据长度也会相应增加。这就要求权限码不能超过计算本身的长度,并且在数据库中存储权限码时,权限码的长度不能超过使用的数据类型。例如:在32位系统中,权限节点的个数不能超过32个。但是如果基于mySQL数据库的BIGINT有8个字节的存储空间,使用BIGINT存储存储码时,权限个数不能超过64。面试官:好的,能告诉我离开的原因吗?采访者:我是这样想的。我其实觉得人应该向着更高的追求,更大的环境,更大的市场去锻炼自己,对不对?面试官:嗯。采访者:当然,这是我个人的看法,现在我觉得现在的形势是逆水行舟,不进则退,因为北京的疫情还是很严重的,但是我认为这是我真正的机会,我应该抓住它。面试官:好的,你4号可以来公司吗?面试官:是的,我已经买好了机票。面试到这个阶段,技术方面基本就结束了,剩下的就是人力资源问题了。很多朋友喜欢说离职的原因是公司倒闭、搬迁、裁员等原因,但其实这些原因都不是面试官的原因。“听着,那么从人力资源管理的角度来看,面试官到底想听什么?他要的是一些主动积极的理由,而不是一些被动的理由,因为裁员、搬迁、倒闭是被动的理由,你是被“逼”出来的离开老公司。所以说白了,他需要你给他一点野心,而野心是指一个人愿意去完成某件事或者达到一个既定的目标。野心的强弱取决于意志的大小。如果意志力越强,说明野心越大,成功的可能性就越大。所以,当然,你要向他证明,你是带着野心来面试的。面试官:好的,待会儿见。:好的,非常感谢给我这次面试的机会面试官:别这么客气,88面试官:好的,再见最后,我们需要用一句谢谢来结束整个面试,无论面试成功还是不是,a真诚的感谢会给面试官留下良好的印象。在感谢对方的同时,也感谢自己的努力。整个采访过程的视频请到:结语:正如《双城记》中所写:这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时代,这是怀疑的时代;这是光明的季节,这是黑暗的季节;这是希望的春天,也是绝望的冬天;人前有万物,人前无物;他们直奔天堂,人们直奔地狱。在这个疫情多变的时代,有时让人感到无限期待,有时又陷入无限绝望,但无论如何,我们始终要迎难而上,开启新的征程。在生活中学会生活,在面试中学会面试。原文转载自《刘越的技术博客》https://v3u.cn/a_id_183
