一个野生从业者是如何一步步走向正轨

    技术2022-07-10  147

    简单说下吧给大家一个参考,非科班出身,野生前端从业者,在小公司打杂一年后,意外地拿到了美团的offer,成功跳槽到了美团事业部。

    接下来,正文从这儿开始~

    3年前,我本科毕业进入了一个机械行业,干了一年,觉得生活完全单调无味,转行做了半年多,薪资很低,当时想着也能进去百度,后面感觉百度的一些价值观自己不太能接受,培训完后我问我的讲师,你觉得百度好嘛,他笑笑说,不管去哪平台只能带给你光环,就像现在的我一样,当初从百度离职,自己出来做一些事情,后面更多的是靠自己,我似懂非懂的点了点头。

    前端培训班毕业出来之后,我选择留在。在北京这个充满商业气息的地方,每个人都对自己的未来充满了希望,《猎场》里的郑秋冬如此,我也一样。

    虽然我的家庭条件不是很差,但我还是希望通过自己的努力,实现当初的梦想,出任CTO,甚至财务自由。

    来到北京,我更加明白,要想在北京出人头地,一定要在别人看不见的地方更加努力才行。很快,我面试上了一家北京的创业公司,前端工程师岗位,做地生活平台项目,月薪10K,双休。

    刚开始的时候,我们公司里的PHP大佬让我先做专题页面的切图,以及其他页面的前端制作,还有公司官网需要的js交互功能的实现。除此之外,我们老板还给了我一本关于PHP开发笔记的书籍,让我研究,因为我们公司的网站后端用的框架是ThinkPHP。

    那时候,我前端页面切完之后,就会捧着PHP开发笔记研究它的面向过程编程,时不时地请教大佬一些问题。那段时间感觉自己成长了许多,从前端页面到后端套模板,再到一些网站运营、编辑的事情,锻炼了自己的能力。有时候周六日,我还会在猪八戒网上接一些私活儿,外包项目啥的,挣点外快,顺便夯实下自己的业务知识,业精于勤。

    还记得我来到公司一个星期以后,我慢慢意识到周边的同事们,每天到了下班点都没有走的意思。用他的职场经验告诉我,下班晚走半小时,是一种工作态度。尤其是作为职场新人,要想在公司有所发展,技术有所提升,就必须付出比别人更多的努力。于是,在那天过后,我慢慢地成为了我们公司来的最早、走的最晚的员工。那段时间,也是我技术提升最快的日子,而这些细节,我们老板都看在眼里。时间过的很快,转眼已来杭第二年。付出总有收获,一年之后的我顺利地涨薪到了12K。

    在小公司里呆久了,你会发现公司业务发展的瓶颈,可能是当时自己的格局太小,觉得自己遇到了技术瓶颈,职位晋升缓慢困难等等。

    当时在小公司打杂的我,无时无刻不在羡慕着大佬的大厂光环。由于彼时,美团发展迅猛,我对之早已垂涎已久。

    我深知,大厂最看中的就是基础知识扎实与否。为了进大厂,我拼了。从亚马逊买了本经典的《JavaScript高级程序设计》,俗名红宝书。每天背着我的双肩背包,在上下班的地铁里,一页一页地拜读着JS高程,白天去了公司也看,晚上下了班回去也钻研。就这样,反反复复来来回回把这本书翻了三遍,期间也接触了一些流行的前端框架和构建工具。终于,我在看到美团的社招信息后,勇敢地迈出了第一步。

    当时参加的是美团点评部门的面试,部门前端技术栈是vue,后端用的node。一面通过后,等了两个小时面试二面,然后通知我回去等消息,一般这样就是挂掉了,毫无疑问。后来才知道美团是一次性全部面完的。所以以后有去参加美团面试的童鞋,最好做好面试四个小时的打算。

    先来聊聊一面吧~

    一面

    1.简单的自我介绍,与大体的了解我

    一面面试官非常不错,先问了下几个项目和用到的技术,会先对我懂的东西做一个大体的了解,比如webpack的单页面的多页面切换,webpack的按需加载,一些webpack的配置有哪些,问了有没有看vue源码,我说了一个vue的watch,大体问了问我框架方面的东西。

    2.promise的原理

    这个面试官最让人欣赏的就是不会去问你不了解的东西,一开始问了我promise,

    然后就让我用原生js写一个回调函数,其实就是问promise的原理了,js写一个。

    3.this指向

    这个是面试官手写了一道变态长以及绕的this指向题,可以自行百度js this指向面试题,看几道没有啥问题,需要关注的是其中也考了,argument,和apply(null)。以后想起来再写吧

    4.bind与函数柯里化

    也就是写个bind,这个红皮书高级函数(22章)有:

    1 function bind(fn, context){ 2 3 return function(){ 4 5 return fn.apply(context, arguments); 6 7 }; 8 9 }

    可以看下。不过还是得先理解bind的用法,返回一个函数,以及可以传递的参数。参数这里涉及到了函数柯里化。都是手写代码,而且最好写的整洁,因为我有些一笔带过,面试官都让我写完整,明确说要看我写代码水平

    5.==, isNaN, typeof

    问这个之前先问了我有几种数据类型,这里隐形的看你知不知道es6,symbol这个新出的类型。说出了symbol自然会问你这个类型有什么用。

    然后就写了好多个typeof,isNaN,==的问输出,这个就是基础题。

    6.知道什么http请求头?

    这个可以说的很多,说了几个,又主动说了下有关跨域请求头,之前项目用的cors,于是和他聊了一会,其实面试就是主动表现自己,把自己知道的都说出来,不然几个请求头说细不细,要问细了能把人问蒙了,最好把话题引到自己知道的地方。

    7.问了css

    问了css盒子并画出来,清除浮动与bfc,两列布局。

    8.说了一大堆其实就是想考我防抖

    面试完这个问我想问的问题,我直接问还有二面么?回答有的,又介绍了一会美团点评,说是后台是node,看来要求是前端也要有后台的知识喽。

    二面

    二面问的显然比一面深入很多:

    1.自我介绍,问项目

    针对项目问了不少,当时有一个支付行为的项目,于是问了很多安全方面的问题,蒙蒙的,完全不知道。第一个就很失败了。然后问了其他的项目,问了websocket。

    2.node的EventEmitter用js实现出来

    写出来了,但是可以看出来代码写的不规范,学长面试官表示看起来很乱。不过大约算是可以的,指出了几个问题,让我进行修改。(之后完善)

    3.虚拟dom

    其实vue中就有jsx,react的特点之一有jsx,虚拟dom和代码优化有点关系。

    先说下正常对dom的操作,在浏览器中分为渲染引擎和js引擎,现在浏览器内核一般都是渲染引擎(生成渲染树),因为js引擎越来越独立了(所谓的v8引擎?)

    然而你在js中获取dom元素的时候你必须要通过渲染引擎,这样两个线程之间的数据交换自然会很慢。所以在前端优化中总是要考虑减少dom操作这一项。包括获取dom元素变量储存起来。

    jsx是把dom元素变成了储存在内存中的数据结构。js很快,操作dom也很快。不过也存在缺点,目前的理解就这么点了。

    4.路由的实现原理

    5.node文件流,java的映射机制(记不太清楚)?加一下我的前端学习交流扣 扣 qun:953049818

    差不多吧,很多都忘记了,也算一个自己跨专业,正好当时确认,我自己做了很多准备,每天现在都在看点前端知识。很多人其实纠结是自学还是培训,其实没必要纠结,培训能多认识以后做这行的一些朋友,自己学的话能锻炼自己的自律和解决问题能力,我当时选择培训的是因为我爸妈支持,而且当时比现在好很多前端环境。

    Processed: 0.015, SQL: 9