出乎意料的面试

面对不一样的面试问题,如何应对?

Posted by My on October 30, 2024

来源于知乎的想法,进行展开谈谈

逻辑

什么是「逻辑」?现在网络上很多人都在讨论这个问题,说我们从小缺乏逻辑性,因为没有逻辑课。我从来没被人说我没有思维,相反的,在做个人介绍或者其他场合,我都会说我有比较好的逻辑思维能力。但是,今天,一个面试,让我不得不审视这个问题。

面试官:你不觉得你和学计算机的编程逻辑相差很多吗?你专业是硬件,而前端是软件。

耳朵第一次感受到这个问题的时候,确实是有点惊讶。我不能解释什么是「编程逻辑」,我只能从别的方面来回答。编程逻辑也是逻辑的一种,它无非就是计算机程序的运行逻辑,是指令或者代码的执行顺序。而逻辑思维,我自认为是有的,辩论会、演讲、课题答辩等等,都需要逻辑思维能力。我认为面试官的问题,无非就是说我不是计算机的,对「代码」没有一种天然的亲合度。但是,我也引申出了工科的课程,比如 C++,这是正儿八经的编程。而一些工科领域,比如 CAD 制图,也是通过指令、代码来实现的,又比如铣床的车削加工,也是通过代码来实现的。所以,这难道不是编程的一种吗?编程思维不仅仅是在计算机领域,在其他领域也一样拥有。

我感觉面试官有与生俱来的自信,同时我觉得他对我的专业存在一定的误解或者歧视。也许出于愤懑,我说「尤雨溪」和「黄玄」也不是本专业的。但面试官说「尤雨溪」是硕士啊。所以这是从专业和学历上歧视我了吗,他们本科不是计算机,但后面的进修选择了计算机。而我本科不是计算机,工作的时候选择了计算机。我觉得没什么不同,都是对这方面的热爱和追求,才会做出如此的选择。但是在他看来,好像编程了我没有资格边编程一样。

岗位匹配的能力

从招聘的初衷上来说,应该在有需求的时候就已经明确了需要什么素质的应聘者,且最初就应该规定了这个岗位的要求。但是,现实往往是残酷的,招聘者往往会在面试中不断地调整自己的要求,甚至会在面试中被问到一些奇奇怪怪的问题。

我的经历和经验也就限制我的级别是「初中级」,刚好是符合他们的岗位要求。同时在一面的时候,确实是询问了和本岗位相关相匹配的问题。

然后,今天的面试却让我出乎意料。从前面的对专业的误解,我已经觉得面试不可能很顺利,但是我还是心存侥幸。然而,面试官却问了一些奇奇怪怪的问题,让我不断怀疑自己和怀疑面试官。

  1. 从 0 到 1 搭建一个项目,需要考虑什么,有什么原则

这个问题凭我的认知很难回答(虽然有独立承担过项目),我觉得这是「架构师」该考虑的问题,也就是说,这是在一个大厂,这是一个大项目。因为如果是小项目,我一分钟就建好了,然后写代码,不需要考虑。但我还是尽量地贴合「架构」的角度去答。这个问题让我想到了「需求分析」,因为需求分析是一项复杂的工作,需要考虑很多因素。当我说考虑需求时,他说还没到需求,就只是搭建项目,和需求无关。

我的回答很简单,根据项目的大小和团队成员技术的评估,进行「技术选型」,比如说使用 Vue.js 还是 React,同样的选择 CSS 预处理器。根据项目的要求,如愿意使用开发成本去替换维护成本,那可以使用 TS 开发,便于维护。另外做出编码规范和 Git 版本管理规范等。到这里,一个空的基础项目就搭建好了。

但是,不出意外,面试官说不对,我这么处理,这个项目连启动都启动不了,他起码还能说出十几种(但是却没说)。我觉得我不是「架构师」,我考虑的只是项目的技术选型,而不是项目的架构设计。从面试官的反应,我这题不得分。

  1. 封装组件有什么原则 这是第二次碰到「原则」这个词,我始终理解不了它的含义。当时我想的是,「我做人的原则…」「我打游戏的原则」等等,我好想懂了什么意思,应该就是「必须怎样」「不能怎样」。

所以我说,必须要明确目的,比如说组件的使用场合,还有处理组件的边界条件,保证耦合度低,不能有业务代码。必须结合组件的使用场景,规定好组件的属性和方法,保证组件能灵活地配置各类属性,比如说宽度,显示隐藏等,并向外暴露合适的方法。

然而,面试官说不对,我问那原则是什么。面试官的回答是:比如封装按钮,按钮要有可编辑和不可编辑的状态,这就是原则。

说实话,我还是不能理解「原则」是什么意思,另外对他的回答我也不赞同。我觉得他的回答太过简单,没有深入到每个细节。我提到的「规定组件的属性和方法」就已经包含他所说的内容了。比如一个「form」组件,我的原则就是规定好应有的属性,如组件标题「title」、组件宽度「width」、是否可编辑「editable」等,并向外暴露合适的方法,如「submit」、「reset」等。所以,我并不认同他的回答。

  1. 使用 react 的原则是什么 我问了一下,他说他的原则是「使用 React 的原则」,我觉得这个回答很奇怪,因为我之前从来没有听说过「React 的原则」。我并不知道这个要怎么回答,一方面我还没搞懂他所说的原则,另一方面,我也不知道他为什么要问这个。

不过,我还是答非所问了,说出我认为使用 react 中的一些注意点。比如布局规范,页面下面的逻辑写在了上面,应该按循序编写。对于复杂的页面,应该将各部分抽离成子组件,便于维护和阅读。另外函数变量等命名要有意义,不要太长,易于理解(这些其实算是一些开发规范了,我不知道这个和原则有什么关系)。另外,合理使用组件的生命周期,合理使用 hooks,避免过多的渲染,提高性能。

同样的,我询问了面试官的原则。他说一个页面应该有什么,写标签必须有类名吧,这就是原则。

我非常不赞同他的回答,这个和原则有什么关系,我始终觉得他心里也没有很好的答案。

感受

这次面试的体验我觉得非常糟糕,单单是讨论专业的问题,我就觉得是受到了歧视,或者说人家从一开始就没真正的想让我通过。后面提的问题都很泛,另外读不懂他所谓的「原则」,同样他的回答也很简单,让我觉得他不知道自己在说什么。最后,我觉得我他根本没有明确这个岗位的要求,另外一直在说不对,但又没给出合理的答案。