记一次结对编程面试

这不是一篇干活技术文章,并且内容可能引起任何营养不良。只是第一次在面试中遇到结对编程,觉得还挺有意思,以此做一次记录。

可能你还不知道什么是结对编程,那么我先来科普一下子:

结对编程

有刺激有木有,当然,我也是被通知需要结对编程,直播写代码才去了解的。在此期间,我脑补了无数不堪入目的画面,此处省略500字。

进入正题,我按面试的要求,事先安装好了面试所需要的几个软件(vscode/vscode live share plugin/zoom),人事小姐姐也在约定好的时间把zoom 地址发给了我。

进入zoom 会议, 耳机另一端传来的是一个略带沧桑却铿锵有力的声音, 礼貌的互相验证身份之后, 开始了这次面试:

hr: 先说明下, 在这次面试过程中, 我随时有可能打断你的谈话, 可能是我比较关注的某个点我想问你下,希望你不要建议。

我: 好。。。(有点紧张)

hr: 我们这次面试开始会有一些提问,后面会有一次在线编程,你的相关软件应该都安装好了吧,那就让我们开始吧。

我: 嗯,安装好了。

hr: 请先做下自我介绍

我: 我是2016年毕业于重庆交通大学,做了两年前端....(面试时候的自我介绍基本都已经能背下来了)

hr: 好的,我基本了解了。你用react 用了多久?

我: 还没用多久,大半年吧,是最近公司的一个项目技术选型用到了react全家桶,然后才开始学习的react。

hr: 那你有用过PureComponent吗?

我: 您说什么?不好意思我没听清。。

hr: PureComponent,p-u-r-e component

我: 没用过,一般都是用Component去做继承

hr: 好的, 那你知道我们所用的哪些属性是继承的Component吗?

我: 有setState

hr: 还有吗?

我: 不知道了。

hr: 行,那我们开始下一个问题,有用过 redux 这类的状态管理容器吗

我: 有的,为了搞清楚里面概念性的东西,我还去看过redux的源码

hr: 噢, 是吗, 那你知道connect 的原理吗

我: 这个没去了解过,只是看过原生redux里面的代码,没有看过 react-redux

hr: 好的,我明白了。那你觉得在什么样的场景下适合使用 redux 呢

我: 当然是那种相对复杂的场景,随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的 state (状态)。 这些 state 可能包括服务器响应、缓存数据、本地生成尚未持久化到服务器的数据,也包括 UI 状态,如激活的路由,被选中的标签,是否显示加载动效或者分页器等等。管理不断变化的 state 非常困难。如果一个 model 的变化会引起另一个 model 变化,那么当 view 变化时,就可能引起对应 model 以及另一个 model 的变化,依次地,可能会引起另一个 view 的变化。直至你搞不清楚到底发生了什么。state 在什么时候,由于什么原因,如何变化已然不受控制。 当系统变得错综复杂的时候,想重现问题或者添加新功能就会变得举步维艰,这个时候就需要使用到redux。(背的官方原话,大概意思差不多)

......

提了大概10来个问题后,基本都是关于react全家桶的。

然后就准备开始面试的重头戏:结对编程! 面试官给了我一个地址,我再几次尝试之后,成功连接到他的vscode

题目是,通过create-react-app 做一个todoList, 我有点欣喜, 这不就是我写过n 次的玩意儿嘛 ,这只不过是n + 1 次罢了, 看我不轻松搞定!

然而事实并非如此, 也许是最近忙于面试没咋敲react , 也许是第一次 结对编程,有点紧张 ,手指放在键盘上,居然感觉到一丝生疏。。。

大概20分钟过后, 我还只是完成了基本页面的渲染, 还没加入对数据操作的逻辑 。。。

对方叫停了说, 让我说下接下来的思路就行了,不用继续往下敲,简单的几句沟通之后,结束了这次面试

到了最后,我基本上已经是一种无力的状态, 对面这种方式的面试, 暴露了自己在学习中各种漏洞, 对react的掌握基础还都不牢固,对自己做过的东西拿不准,也没有大型项目的洗礼和沉淀,很多技巧性的方式方法都没使用过。 也让我这次面试注定以失败告终。不过这还是一次非常宝贵的经历,至少让我看清了自己的一些现状, 也让我学习到了不少