如何看待滴滴业务核心部门的前端面试?

2,890 阅读7分钟
原文链接: www.zhihu.com

题主背景在前端工作5年多,去过两个大的互联网公司工作。最近在找工作。
很多问题是临场发挥,不是做电脑前面自己搜索下找到个很完美答案,很多问题你没考虑过,临场发挥肯定有很多想不周全的。打嘴炮的请仔细思考。
面试官几个问题:
http地址栏输入到返回经过哪些阶段?
http协议是无状态的,如何保持登陆态?
css3怎么实现花瓣飘落效果?
数组找两元素等于目标值的算法。
怎么看待es6?
面试官问怎么翻墙,我说用一些付费翻墙软件,这哥们建议我自己在搞个国外的vps。

第一题 我考虑是网上经常刷的题,第一反应很反感这样烂透的问题,我的答案是首选解析请求url,例如协议,地址,端口号等等,然后通过相应的协议请求地址,经过dns查找,路由网管,代理最后到达服务器。(后来面试官提醒我网络层协议啊 传输层协议啊 数据链路层啊 这块考虑下。我还真是没从这方面考虑。)这问题说白了问的面很大,可以扩展到方方面面,说说请求的过程中如何压缩数据包的,请求头,请求体有哪些属性,request header 和 response header 有哪些共有的,有哪些自己私有的,http协议可以分成http1.0 http1.1 http2.0,and so on and so on。
第二题 实际中没用过,只知道肯定会有个神秘的印记,面试官告诉我用uuid。
第三题 知道transition、transform、animation。但是不知道实现技巧。第三你如果换成如何看待transition和animation异同是否更ok?
第四题 在js语言下用了indexof,面试官告诉我用hash,哈希在底层貌似也有损耗。
es6从函数式和面向对象两层角度扩展了js,有很多python和ruby的影子,试图把js打造多范式语言,对日后前端工程化提供了基石。
然后面试结束,面试官建议我自己搭个站让我试下http协议,说搭个站很简单(我真是次奥了,搭个服务器装你马啊,我会笨逼到不知道怎么搞个服务器环境?)。

事后建议我看图解http协议。说实话我两年前看过。记不住细节了。不太明白这些有什么通用意义。个人觉得他刚刚看完这本书。其实我也很想问他,如何判断对象是否是dom节点?怎么让事件穿透dom元素?如何设计一个前端模版?怎么看待前端分层框架?前端开发中提高开发效率的手段有哪些?但是我忍住了。我个人也看过图解密码学,我也想问下https协议的s到底ssl如何一步步演化过来的?我也想问为什么浏览器单域名最大并发量6-8,但是我忍住了。必经是年轻人,必经气盛!
我记得在一个叫美X和阿X面试时,有一个面试官问到做过什么提高开发效率的工作?另外一个问有限前端人员如何最大化提高运营人员的支持力度?这是我遇见过给我最大震撼的两个问题。问题能反映问问题的人的高度!

我记得我跟我一前同事聊过天,他是某司的前端leader,他手下有两个刚毕业不久的小孩,如果他们部门有面试他会派小孩去给别人面试,每次小孩都是问那些刚刚看过的技术,甚至面试前现准备的,例如脱离简历直接问对方:“requirejs的config如何实现的?如何搞定XXX(例如让你画个玫瑰)动画效果?”。每次我那哥们都说,派小孩去就是考验下面试者的德,是否能在坚持住冷静并且能理性看待。

我也见过某些面试官,一直不断给你出问题,一直到给你问倒了,脸上会露出得意的笑。我也当过面试官,个人觉得面试 是个双向的过程,我会给候选者自由发挥的空间,从他口若悬河中我想知道他看问题或者看前端的高度和深度。甚至让他把他最擅长那面(可能我不熟悉那个领域)讲出来,然后综合看待是否合适,对方的技能栈和我们需要的是否匹配,有些人很优秀只因为我们XXX公司请不起,最后很惋惜的让人家走掉。我曾经帮一哥们推荐某浪的普通高工,哥们回来也是这么跟我抱怨的,说现在面试让小孩面试,妈的没事儿问你迪杰斯特拉算法,如何找到数组第N大的元素, 不过后来哥们去了比某浪NB的一家互联网公司当了架构师。

也许你最近正看到某些牛逼的书籍(可能我早看过了),你对细节印象还很深,可我早忘了,瞬间你觉得自己可以跟恩奇一样牛逼了。问别人这些问题,然后发现别人不知道或者记不住,你这种优越感更明显了,然后你觉得你可以跟高德纳探讨下程序设计的艺术。这种装逼并且找存在感的行为。

请问你知否敢当面角色互换下,让我面试你?我肯定不会出超过这职位该掌握的问题,不会问你巴贝奇差分机产生的意义,也不会问你香农信息论,以及图灵机原理这些我刚看过的信息简史的问题。

我想说的是,咱们问问题能否问一些具有一定抽象意义的问题。
花瓣的动画效果有统计学和数学意义吗?就是一个特有的技巧问题。
说白了就是这问题就一种很隐晦的解法。
登录态的问题(图解http协议这本书特别强调http是个无状态的协议)
uuid这玩意也属于知道或者不知道,我无法通过推理得到答案,而且答案唯一性。
我也建议外国人来中国,一定要考他们如何使用筷子。这个技巧都不会来中国干啥。
我觉得我最想问面试官一个问题,那就是你们想招个什么角色的前端开发?招的岗位定位在哪?

面试前端最重要是,你们想招个帮你们处理什么问题的开发?如果解决业务问题的你问我那些绝对不合适。
如果解决前端开发方案或者是专做前端动画工程师那我是不合适。
有些东西你知道就知道,不知道的话短时间内通过经验+逻辑也推理不出来的话请慎重问这些问题。
我请假一天,走着地铁,加上倒蹬小腿,跑到你们那儿,多少给点安慰吧,如果你问那些问题直接电话问呗,也不用我跑一趟。如果不尊重我时间,至少尊重你自己的时间吧。

个人不是很关心offer,关键问题用人公司是否用心。技术好似数据结构的树,你从叶子节点问起,很少能记起细节。但是我们可以从树根节点一点点问问大致脉络。试问多少人能回忆起当初解决某问题的细节?即使你自己写的代码,n久之后你是否看得懂?
毕竟你得经历第一阶段前端是前端、第二阶段前端已非前端、第三阶段前端还是前端。终极根本没有前端。
没别的意思,呼吁下国内前端风气正点。
你业务部门不搞基础方案开发的,把握问题方向。
觉得自己nb的说说自己项目做了某些自创的技术或者方案。拿来主义就别bb了。从性能、前端分层、模块化、自动化构建、安全方面、项目静态资源结构、可视化、基础库、ui库、前后端分离方案等等。

觉得自己牛逼的,把电话留下,我直接电话你,我当面试官,我面你。不敢的话别BB

有人说忽悠,你能“忽悠”住那些高级专家说明你厉害。大忽悠只忽悠low逼。忽悠没有明辨能力的无能者。