原文地址:为什么很多互联网公司更注重应聘者的编程基础 转载请注明出处
先说说自己的状况,临近毕业,面临着找工作。自己在本科阶段成绩还不错,获得不少奖学金和奖项证书,本来有保研的机会,但是自己放弃了。我考虑的是,就算读完研究生,毕业同样面临找工作或者继续升学的问题。现在的本科生基本上算是批量生产,研究生也在大力扩招当中,或许再过几年,研究生与本科生基本上也是满大街都是,没多少优势。研究生出来,起点或许学历上比本科生高一些,但是在工作经验和社会阅历方面比起已经工作好几年的本科生还是差的不少,工作的时候还是可以学习,而在学校学习却不能放开手去获取社会经验。一句话,学历不代表学识,能者入世。
澄清一点:我并不是针对对研究生的同学们,也没说读研究生不好,其实关键还得看个人取舍。而且读研跟专业关系很大,我个人认为,工科学生还是尽量找工作,工科对动手能力要求很高,如果只是搞研究也只是纸上谈兵,当真正需要开发序项目的时候还是不会,理论上说得头头是道,却没有实战经验,如此,还不如学理科专业,理科专业注重理论研究,而工科专业注重实践。当然,文史性质的专业我还是建议继续读研。
好了,步入正题吧。春节过后去了深圳,面试了不少公司,一般都是先做一张技术试题,差不多的话进行技术面试之后再人事面试。技术面试有的时候会有好几轮,一般涉及基础的知识偏多。我目前主要搞前端开发,HTML+CSS+JS的一定涉及,其中偏重于JS部分。一般来讲,字符串与数组、Ajax、闭包、作用域、原型与原型链、面向对象几乎是面面必问,另外还涉及一些浏览器兼容性、hack技术、跨域、HTTP协议的问题。运气好的话,公司本身就有前端人员,问得比较专业也比较好回答,运气不好的话,遇上一个名曰后端转前端的工程师来问你问题就有得好受了,总是用后端的思维审视前端(虽然在系统学习前端之前我也是这样的),问的问题,他认为跟前端有关,实际上完全是后端的问题,跟前端八竿子打不着的问题。对于一些不是计算机相关专业,在社会上混了好几年却想转行做IT的童鞋可就有的受了,很多人连数据库、服务器、后端语言都不知道是什么东西,被问着的话往往是两眼一抹黑,呵呵了也。
然而,那么多公司为什么那么注重于基础呢?无非就是循环分支、内置API加上一些语言特性而已。对,的确是,但事实上,前端所有厉害的库和框架都是基于原生JS构建开发的,无论是简单易学的jQuery,还是强大的Angular、Vue或React,万变不离其宗,都是基于原生JS开发的。读过jQuery源码的同学都应该知道,其实一个前端库并不是那么难以构建,关键得深入其精髓,明白其原理,那么离精通便不远矣。
所谓精通是什么概念?可以不借助任何框架、任何提高开发效率的插件和库,完全自己使用原生进行开发,实现不亚于使用任何框架的效果和兼容,谓之精也。但是要达到精通并不容易,不但需要付出时间还得有钻研精神,并不是轻轻松松能达到的。记住,一万小时定律。
当原生达到一定程度的时候,完全可以自己开发插件,写自己的库和框架。这也就是为什么很多面试官更侧重于编程基础。有的童鞋用插件、库或框架用得非常厉害,但是遇到那种所谓”弱智问题“的时候,却往往不知道如何处理,关键就是,基础不牢靠,不知从何入手,不知如何调试。
当然,我也遇到过一上来就问“你Bootstrap/Angular/Vue/React熟练吗?”,"我们公司是基于Webpack+Vue/Angular+ionic进行开发的,你会吗?"。这种公司更倾向于快速开发,不乏有很多是外包公司。孰优孰劣,怎么说呢,还得看个人定位与取舍。但我个人认为,框架是学不完的,更新换代快,今天流行这个框架过两天马上就是另一个框架的天下了,学无止境,如果一直研究框架,会让人觉得一直在学习却一直学不完的状态。所以,算是建议吧,先把基础打牢,不管学什么框架,都先熟悉其原理,那么,入手快,能够很快进行开发,不会付出大量的时间和经历去纠结一些不必要的东西。