[吐槽] 最近的前端面试

2020-03-17 20:58:05 +08:00
 lococo

最近在面了些厂,几乎全部挂在偏门基础上,如下举例

  1. f.bind(context1).bind(context2)会如何
  2. obj1[obj2] = ''会如何
  3. let A = function () {return obj}; new A()会如何

···

这些题无一例外,全是抖机灵得考你对某个细节知识的掌控,例如 bind 的底层原理?类型转换? new 的原理?

我不否认这些原理和基础很重要,但试问

面试题难道不应该基于实际的业务场景?哪个最佳实践会让你这么写代码?

偏门的知识点永远不能体现任何问题,这些问题除了能在刷题的时候遇到,能解决什么实际问题?即使实际遇到了,难道不是 google 一下就可以解决的事情?

你问我什么问题不能 google 一下解决?那就是你不知道坑在哪你就找不到方向的问题,例如 eventloop,webpack 的打包原理,http/https/h2 的各种协议问题

所以这些面试题除了可以让那些刷过大量面试题的童鞋欣喜以外,反而会让我们这些善于处理实际问题,而对很多偏门细节知识点掌握不好的童鞋感到头疼

好了,不说了,我刷提去了

9190 次点击
所在节点    职场话题
94 条回复
royzxq
2020-03-17 21:36:20 +08:00
@lococo 这个问题我一定会问的,这个问题会引出 bind 的实现, 引出 bind 的实现就一定会问到 call 和 apply,然后还会涉及到闭包。 看似只问一个问题,其实中间能涉及到很多点,包括闭包还能继续引下去。如果你以为面试官真的只想考察这个你以为偏的知识点,那就真的是理解错了 。
Justin13
2020-03-17 21:37:27 +08:00
说实话,我也认为这些偏门知识没大用,正常写代码根本不会写出这种代码。
有些地方知道有坑就好了,写代码时绕着走,而不是非得整的清清楚楚,这个坑有多深,是三角形的还是四边形的,有意义么?
royzxq
2020-03-17 21:38:58 +08:00
另外,只看面经也只能答出一部分题,如果觉得这个人可能是背的面经。直接要求手撕代码就完事儿了,面经可背,手撕问点业务中实际存在的、不难但是可以考察出真材实料的问题一样可以过滤掉背题选手选出真正靠谱的。

如果你真的觉得没必要问这些,你完全可以要求面试官问一些涉及到具体场景的然后进入你自己的节奏啊。
lococo
2020-03-17 21:38:59 +08:00
有些童鞋不明白三道题的点在哪里,这里说明一下:
1. 连续两次的 bind 无意义,而且有歧义
2. obj 的变量赋值需要字符串,如果变量是 obj 的话很傻
3. constructor 的写法一定不需要 return,除非你的 constructor 别有用心,那样会有歧义
rabbbit
2020-03-17 21:43:06 +08:00
看干什么把,如果是造轮子的话基础的确挺重要的.
不过第一题我也不会,没试过 bind 两次.
ianva
2020-03-17 21:44:46 +08:00
这种面试没有意义,这些机制上语言带来的,原因上在于语言有缺陷,而不是有多优雅,就像那本 JavaScript 精华部分那样,而这类的问题不应该由人去解决,所以道格拉斯弄出的 JSlint,直到现在发展出 eslint。在现在这个阶段来说语言也似乎不是问题,前端可选的也越来越多,所以这类的问题,最没有价值
rabbbit
2020-03-17 21:45:08 +08:00
话说回来,有办法在外面函数是否已经被 bind 吗?
rabbbit
2020-03-17 21:45:41 +08:00
函数 -> 检测函数
royzxq
2020-03-17 21:48:56 +08:00
楼上大佬太多。那我想请教一下各位大佬,在面对蛮多候选人的时候,除了结合候选人经历 /项目之外,如何快速高效的在几十分钟到几个小时的时间内对候选人做出一个相对合理的评判。
guozhigq
2020-03-17 21:49:00 +08:00
@musi 牛客 掘金
ianva
2020-03-17 21:58:54 +08:00
另外造轮子和语言的特性是没有关联的,就像 SICP 里那样,用 scheme 这种非常精简的语言中的很小一部分特性,去不断的一层一层实现抽象,哪怕构建语言也上从需要出发。

造轮子考验的的对平台的熟悉,很多框架的熟悉,不同语言的熟悉,在这基础上,提出需求,并不断分析需求,实现他,其实是一个自己发现问题,寻找方案,制定方案,实现方案的过程,语言在只是工具,复杂难懂的工具并不会提供太多帮助。
myl0204
2020-03-17 21:59:41 +08:00
最近也在面试,不喜欢刷题也没有去刷题,靠平时的积累硬着头面试
lococo
2020-03-17 22:05:44 +08:00
@royzxq bind 的实现原理真的很重要么?原谅我写了 5 年 js,bind 用过无数次,但从来没有关心过 bind 的底层是如何去实现的。而相反,我在面试的时候更偏向问下 webpack 的原理,知道的越细,在做优化的时候方向就会更多
royzxq
2020-03-17 22:14:45 +08:00
@lococo bind 原理和 webpack 原理并不是二选一啊,都知道它也不需要多花多少时间啊
lococo
2020-03-17 22:23:25 +08:00
@royzxq 不不不,我的意思我想不到任意一个需要知道 bind 的原理才可以解决的实际问题,一旦脱离实际业务了,问题本身就没有太大意义了
lococo
2020-03-17 22:25:18 +08:00
@ianva 大佬登高望远
ufan0
2020-03-17 22:29:05 +08:00
我一后端应届,
当初遇见这些偏门问题不会,好,我去学;
然后问我框架,我不大熟练,我继续去学吧;
再然后好点的公司,基础要求高,我就看了好几本书,感觉还行;
过关斩将,现在,被挂学历......

现在市场这么饱和的吗?那么点工资的岗位都是硕士和本科生竞争。
lococo
2020-03-17 22:31:37 +08:00
@ufan0 hhh,心疼,学历真的蛮重要,沙子里挑金子是很困难的,所以我宁愿把那些沙子里的金子和沙子一起丢掉,也不愿意耗精力去筛选
ufan0
2020-03-17 22:35:00 +08:00
@lococo 欸,道理我懂,我认同好大学人才更多。

但是两次都是技术面很 happy,和 HR 面也没问题,但是就挂了,挺难受的。

HR 给的回复:疫情期间,HC 缩减,要求会更高,更青睐于 985/211.
chuxiaonan
2020-03-17 22:47:53 +08:00
除了第一题 第 2/3 题平时还是比较常见和基础的吧...

我在想面试官是不是在考一些开发中可能踩过的坑?
比如他第二题 可能就是不小心用了一个 object 去赋值取值
第三题是单例模式的实现方法
第一题可能是上古某个时代的 babel 还是什么的转码器
会把类里面的 func = () => {} 这种的 shorthand 定义转写为 func.bind(this)
如果那个时候没有研究过转码后的代码 很可能会不清楚这个机制 导致在 ctor 里重复定义 this.func = this.func.bind(this)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/653679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX