秋招一把辛酸泪
秋招一把辛酸泪,只怪消息被封锁。
别人暑假就开始找工作了,我当时在干嘛呢,对了,我tm还在一个破企业里搞宝钢的那个破项目😭😭😭。8月底回到学校,发现身边人都在找工作了,我靠,我貌似什么都不懂。百般痛苦,菜鸡的我最终决定先做个小前端。于是9月份别人家的孩子一个一个身经百战的,甚至offer都一大把的,我这边还在苦逼的看数据结构和算法,数据库,操作系统,Web协议,刷剑指offer、LeetCode,看前端基础知
识。对了,我是非专科的,之前也没学过计算机那些基础课。
识。对了,我是非专科的,之前也没学过计算机那些基础课。
一开始简单写了一份简历,瞎投了4家,其中的蘑菇街直接挂了简历。。。。。。阿里内推把我的简历挂着,现在还在挂着。。。。。。字节跳动笔试了,我被四道算法题劝退了,当时女票再旁边,看着我煞白的脸,一脸担忧。。。。。。
接着,一直就是等待中。直到9月16日,美团点评直接给了我面试的机会。当时,问了不少es6和vue的知识,最后让我写一道简单算法题,我当时慌得不行,题目:求出一个数组中出现次数第二多的数,代码如下:
//求出一个数组中出现次数第二多的数 function select(arr) { var counts=arr.reduce((total,el)=>{ if (total[el]) total[el]++; else total[el]=1; return total; },{}); var num=Object.values(counts).sort((a,b)=>b-a)[1]; for ([i,j] of Object.entries(counts)) { if (j==num) return i; } }我当时那个紧张,毕竟是第一次面试,有思路,就是没写出来,面试官也是无语了,直接让我后面去想想。第一次失败告终。
后面我去了一家小公司试试水,上来直接问:“机械工程专业的,怎么想来面试前端,这样吧,我们来几道计算机基础的题。知道平衡二叉树吗?了解TCP/IP协议吗?”我被问的有些懵,也没回答什么,看他的态度没戏,加上我也秉持着试试的打算,就over了。其实这些我都了解,但是太深的知识点,我就不清楚了。回来后,更加疯狂的看那些计算机大学课程。
后面我也没投啥公司了,好好看书了,有时跟着身边同学去学校的宣讲会逛逛。
到了10月,国庆间投了华为、海康、大华、拼多多。到现在大华还没消息。。。。。。海康就是个坑,一直挂着简历,还说我笔试/全面挂了,笔试挂是不可能挂的,群面都没通知。。。。。。华为通过了笔试。
当时去华为面试,其实不应该去的,浪费时间,岗位不对口。一面,面试官也不懂前端,瞎jb问了一堆:1、谈谈你了解的http;2、为什么不直接用tcp呢?3、http是咋封装的?4、内存碎片是怎么回事?5、进程中的锁?最后给我来了道算法题:给你两个数n和m,从1、2、3...n中,找出任意不重复的几个数之和等于m,找出所有可能。我自闭了。后面附上代码:
function search(n,m,arr) { if (n<=0) return ; if (m==n) { console.log([...arr,n]); } arr.push(n); search(n-1,m-n,arr); arr.pop(); search(n-1,m,arr); } search(4,7,[])//例子我一个小小的前端,为什么这么对我,我面的又不是后端。一面刚出门,短信发来了:今天的面试已结束。接下来的三天一直处在自我怀疑中,还是我那可爱的女友把我拉出来了。
无心插柳柳成荫,有心栽花花不开。10中旬陆陆续续的参加学校宣讲会,投了一些小公司,主要是体验一下笔试,找感觉。不过此时秋招已经接近尾声,我都准备明年春招了,谁知转角遇到爱了。杭州这边的一家公司,就成了。题目比较简单,就不说了,面试主要问了一些基本问题。然后第二天offer就来了。
从第一份offer起,仿佛我就开挂了。10月26号,拼多多通知去上海面试,我竟通过笔试了。当天早上,做上去杭州东站的公交,我竟然做错了车。。。。。。,急忙下车后,直接一辆美团单车,狂奔向车站。紧赶慢赶的上了高铁,此时的我精疲力尽,很想来瓶娃哈哈营养快线。说正题,我真是个狠人,到了上海的拼多多总部后,过了没多久,开始面试了。
拼多多面经:
一面:
一位美女面试官,上来直接给了三道题让我做,主要涉及:
1、深复制和浅复制:Array.prototype中的slice和concat方法是一种浅复制,只适用于对不包含引用对象的一维数组的深拷贝
//slice方法的浅复制 var arr=[1,[10,10,10],2,3]; var ar=arr.slice(0,2); console.log(arr); console.log(ar); ar[1][0]=11; console.log(arr); console.log(ar); //concat方法的浅复制 var arr2=[[1]] var ar2=[[1]]; var a=arr2.concat(ar2); console.log(a); console.log(arr2); console.log(ar2); arr2[0][0]=100; ar2[0][0]=200; console.log(a); console.log(arr2); console.log(ar2);
2、扩展运算符 :题目如下面代码所示:请问输出什么。
var x=[1,2,{'a':1}]; y=x; z=[...x]; y[0]=2; y[2].b=2; z[2].a=2; console.log(x,y,z)
var arr=[1,[10,10,10],2,3]; console.log(...arr); console.log('...',arr) //输出什么呢
3、正则表达式中的replace :题目主要讲的替换,例如:str="hello{total}" obj={total:'world'} ,用obj中对应的值进行替代。
function rep(str,obj) { return str.replace(/\{([a-zA-Z]+)\}/g,function(s,$1){ return obj[$1]; }) }
4、最后问了我vue diff原理和源码:我只说了vue局部更新dom的流程,源码没细看。
二面:
一位很年轻的男面试官,主要问了:
1、单向链表的创建、插入、反转
2、new实例化过程
首先了解new做了什么,使用new关键字调用函数(new ClassA(…))的具体步骤:
1、创建一个新对象:
var obj = {};
2、设置新对象的constructor属性为构造函数的名称,设置新对象的__proto__属性指向构造函数的prototype对象;
obj.__proto__ = ClassA.prototype;
3、使用新对象调用函数,函数中的this被指向新实例对象:
ClassA.call(obj); //{}.构造函数()
4、将初始化完毕的新对象地址,保存到等号左边的变量中
注意:若构造函数中返回this或返回值是基本类型(number、string、boolean、null、undefined)的值,则返回新实例对象;若返回值是引用类型的值,则实际返回值为这个引用类型。 3、url数组并发请求,尽可能快的按照数组顺序输出结果
三面:
hr面,主要谈谈一些老生常谈的,为什么选择拼多多?能接受工作强度吗?有女朋友吗?准备留在上海吗?面完拼多多,回去等结果,昨天晚上打电话过来,说是通过面试,后面会有hr谈offer。难道这就是苦尽甘来吗。。。。。。。。😭😭😭
酷家乐面经:
直接去公司面的,一下午面完专业面。
一面:
一位和蔼大哥级的前端工程师来面,看我是非专科的,所以主要问了一些基础问题:
1、二叉搜索树的查找、插入、删除思想,并写出伪代码;
2、null和undefined的区别;
3、var声明提前;
4、ES6的一些新特性;
5、出了一道算法题:两个单向链表,查找共同的那一部分,对于时间复杂度有要求;
6、让我写一个列表自适应的组件:没写出,不知道怎么读取用户的输入。
二面:
一位帅气的羞涩小哥进来面的,直接拿了一张网吧上网系统设计图纸,让我设计一个模块化系统,现场瞎扯淡😬😬😬。
三面:
一位稍微邋遢点的小哥来面的。
1、让我介绍了自己的项目,并用马克笔再黑板山画流程图;
2、问了我关于Vue的响应式原理;
3、Vue响应用的什么设计模式;
4、Vue的MVVM结构;
5、Vue diff流程。
hr电话:第二天晚上就给了我offer通知,很满意的一家公司。😁😁😁年轻化,福利可以,前景还是不错的。
对了,还有个中兴,估计可能也会给个offer,不过不在乎了,毕竟不是互联网公司。当然了,虽然现在只是个小小的前端,但也只是当个过渡,后面还是有远大的梦想的,不想当个咸鱼。
#前端工程师##面经##校招##拼多多#