发现一面试者熟悉 jquery, prototypejs 操作 ajax,但是却不会写原生的 ajax

2015-06-09 09:08:40 +08:00
 andy1987
对jquery,prototypejs很熟悉,能熟练操作,但是用原生的js来完成个ajax请求,却发现写不出来了,见到这种情况,面试官的你们多半会怎么处理? 反正我是醉了
17691 次点击
所在节点    程序员
184 条回复
yoa1q7y
2015-06-09 11:04:42 +08:00
@zhs227 好吧,是楼主没讲清楚,我说的前端工程师的要求^_^
anubiskong
2015-06-09 11:05:11 +08:00
给lz个建议, 别在面试的时候问能用搜索引擎轻松搜到的问题, 这样做非常low.
就像我问你会用筷子吗? 你说会, 然后我让你用两根木棍为原料做出筷子来, 以证明你深刻的理解了筷子的用法.
这种极少有人去做, 而每个人都能做得到的事情很难考察一个人的能力.
你说需要懂ajax的底层原理, 懂了又有什么用呢? 你上次在实际项目中自己实现ajax是什么时候的事情了?
我是这样面试的, 我随便挑了一个CSS的兼容性问题, 然后问他有没有遇到过, 他说有遇到, 我就问他解决方案, 如果没有遇到过, 我就问他你想怎么解决? 去搜索? 你用什么关键词搜? 没搜到/想自己尝试解决? 告诉我思路. 这样一步步追问, 直到对方把解决问题的思路全部暴露出来为止. 思路全暴露了, 就很容易看出这个人的经验,思维方式,知识面的层次甚至工作态度等等细节. 如果面试的房间有电脑, 我会让他现场解决一个bug, 我就坐在后面看着他搞, 一个bug就说明所有问题了
jacob
2015-06-09 11:06:26 +08:00
如果要写原生的,是不是要自己写个Promise啊,否则也没意义啊,自己写Promise我感觉这个太难了,
jun4rui
2015-06-09 11:09:21 +08:00
我觉得会jQuery就已经足够了,没必要写原生的,因为Javascript的原生就是一个超级巨大的坑,我看过jQuery的源码,里面很多很多的代码都是为了填坑,很多填坑的技术都匪夷所思开发者千万别以为了解这些有用,学这些完全是浪费时间。

而且就jQuery和前端的意义来说,应该重点在功能的实现逻辑上,这种底层的玩意是今后语言级别应该填平的。
jun4rui
2015-06-09 11:17:39 +08:00
我再罗嗦一下,现在真的深入了解了前端js,会发现这玩意粗糙无比,规则混乱不堪,根本不值得投入生命去深入研究,有空多看看html5、新的js规范更好。愿意在这里面浪费生命的国内我也就知道司徒正美而已。
Hyperion
2015-06-09 11:24:22 +08:00
@jun4rui 司徒正美的qq群里有一堆哈哈哈哈

不过,如果要做到不可替代,这个是没办法的。愿意去才坑才能写出框架。
hussion
2015-06-09 11:26:18 +08:00
只要能说清楚xmlhttprequest请求相关逻辑即可(包括onload,onerror,send,以及返回状态码等),主要是原理,不一定非要写出来,说真的,写出来也真的没啥技术含量。
otakustay
2015-06-09 11:29:07 +08:00
虽然我也经常拿原生写ajax考人,但我真不认为写不出来代表了什么,倒是回答不出302和200的话就会很让我在意

毕竟你也可以说“好多人会用c3p0写链接池但是让他用原生java写就不会”,类似的事情好多,为什么已经有这么成熟的封装我们就非得知道底下的实现呢……

另外我作为一个团队的FE Leader,勉强会写原生XHR吧,不过你要我写XHR2上传文件我真不会,我还够格当Leader吗- -
jun4rui
2015-06-09 11:35:58 +08:00
@Hyperion 我还是3群的……
Biwood
2015-06-09 11:40:38 +08:00
说实话我也不能保证用原生 JS 写一个完整的 ajax 操作,所以我认为自己水平确实很渣。
楼上有很多说无所谓的,我觉得这种心态很不好,你们真的确定自己的技术已经可以了么?jQuery 就是语法糖,有些人已经沉浸其中不能自拔了。
hj2002007
2015-06-09 11:43:19 +08:00
@andy1987 是 不过很快需要快速开发的环境下 熟悉 第三方库 其实是有时间成本的 当然 如果是团队作战, 可以让其中一个人学习 然后教其他的人使用 有问题 就找那个人
laoona
2015-06-09 11:44:57 +08:00
追求原生,这是必然,对自身技术上的提升。
碰到这样只会用第三方框架的同学,反正我是很介意的。
jun4rui
2015-06-09 11:47:18 +08:00
@Biwood 因为就Ajax这个技术来说,你平时基本不会用原生的,因为要抹平所有浏览器的兼容行和实现,要么自己封装一套,要么用很有用的jQuery等库封装好的,大家对原生的Ajax可以说没有长时间使用的机会,十有八九早忘了。

至于深入研究JS,我自己正在学,非常痛苦,虽有有类的概念,但是问题非常多,你需要花费5倍左右的努力才能达到别的语言相应的效果,而这些效果对你日常工作而言可能毫无用处,甚至这些问题会在不久的将来通过语言本身改进掉,这样你学起来的成就感很少很少……

我是真心劝想深入研究浏览器端JS的兄弟们,仔细想想。Nodejs那边还好,至少人家标准化程度高得多,规范更新坑少很多。
Septembers
2015-06-09 11:47:42 +08:00
@otakustay
写个 连接池 不是什么很难的问题但是写个 无锁连接池 也就不一样了
(别忘记C3P0存在并发锁死的问题
xylophone21
2015-06-09 11:48:11 +08:00
个人觉得讲出原理还是需要的吧,至少说明这个人对技术没有好奇心,不求甚解。
如果换一个问题,
面试windows开发,只知道在VS里点build,不知道cl,nmake等,大家怎么看?减分不?
面试Android应用开发,只知道在eclipse里点run,不知道aidl,dx,aapt等,大家这么看?减分不?

至于最终要不要,这个不是看你们要人要的急不急决定的吗。
j
2015-06-09 11:48:16 +08:00
你先把jq代码丢给面试的人,源代码随便翻。然后你随便问呗,什么原生ajax之类的,你让他快速从jq代码里找出来不就行了。

你考什么内容跟你招什么工程师那是两回事。就算你是js大牛,我现在让你不翻搜索引擎直接写个原生音乐播放器出来还不是一样卡死你。

所以。。。。其实是面试的同学外貌不好,跟技术无关。
arron
2015-06-09 11:49:10 +08:00
原生JavaScript中并不包含XMLHttpRequest。XMLHttpRequest只是浏览器提供的api,你要在node.js里根本见不着这个。所以要考原生JavaScript还是另外出题吧。
j
2015-06-09 11:49:34 +08:00
-。-,,, 借口,都是借口。

追求原生,这是必然,对自身技术上的提升。
碰到这样不会写第三方框架的同学,反正我是很介意的。
lyd600lty
2015-06-09 11:50:26 +08:00
说的好像你会写机器码一样。。
yoa1q7y
2015-06-09 11:52:42 +08:00
@j 哎,这是不一样的,搜索跟掌握,这是两种境界,是质的变化

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

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

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

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

© 2021 V2EX