实不相瞒
来杭州这么久了,面了也有二十几家公司,也是没找到心仪的工作,唯一一个还行的机会也被推了。
感觉应届生处于一种很尴尬的位置,出身的话拼不过校招生(985不谈。。。),先天就被压制,给人一种应届不如校招的能力体现(唉,其实自己也是校招,然而因为种种原因,从南京来到了杭州);另外也拼不过有工作经验的,记得有个HR说实习经验不算工作经验。。。一般找人也会看经验,而从单方面面试的角度来看,能反映出有能力的少之又少,自己也是觉得表达不清楚(因为说话有点结巴)。
总结
把自己最近的面试经历总结下:
- 别慌,把自己会的都说。很多情况下面试以为你能力不够都是你没说
- 一般上市公司的薪资都有标准,很难再加价,6-8k左右。大的公司8-9k左右,当然如果你面试表现特别突出也能要10k+
- 准备工作是非常必要的,譬如JD上的要求、公司背景等
记录自己的痛
只说一些记忆比较清的,因为自己从小就记性不好
蘑菇街二面凉
第一面的时候还是个电话,说了一堆子的东西。总体来说还行:
- js相关,比如闭包、跨域、原型等
- css相关,比如垂直水平居中、css3里的东西
- 数据结构、算法,链表、栈、队列、树,基本排序、二分查找
由于自己习惯性地加上了“记不太清了”、“稍微懂点”,所以面试官也是经常说“如果你还记得的话”...
然后二面直接到一个蘑菇街的大楼里,周六去的很安静。当时直接给了两张图片,手写代码实现,半个小时只写完第一个。。。接着之前电面的面试官来了,噼里啪啦地对着自己写的代码说。总的也忘的差不多了,之后问面试的建议说是要多考虑、写可维护的代码。说说自己不会的:
- 图片的裁剪效果,
object-fit。background-size不够优雅 - 函数式编程,自己说了下柯里化,面试官问应用场景,自己就简单地答了返回一个能连续调用参数的函数。。。再多的就没用过了。问到面试官他们有什么场景时,说我可以去看看redux中间件,现在回忆起来redux的
connect就是一个,然后还有() => () => () => {}这种写法来着 - 面试官说图片的实现的时候,怎么保证和视觉稿一致。这个自己没说到rem布局,,,后来去一家公司面试谈适配的时候赶紧把这个扯上
后来有个从蘑菇街出来的高管,给我打电话,说他和另一个合伙人创业,在组初创团队。当然人还是挺好的,自己也是觉得工资低,就没去了。其实感觉他们的方向不是太对,我也不能说有没潜力,反正自己不太感兴趣
大搜车凉
可能自己要的工资高了。。。
先做一份笔试题,两个面试官有根据这些问问。然后也是问了原型、作用域、es6相关的,有一个问题问了作用域链,忘了。。。其实它就是一个对象,里面包含了当前作用域定义的变量、函数等,是一个私有属性[[scope]],当js解释器执行的时候,会去找作用域链下的变量,没有找到则去上一层,直到最顶层,没有则报ReferenceError未定义。再扯的话就到this和它的区别了,这个自行百度之
HR的时候说了一堆子,然后谈到薪资时差不多到尾声了。感觉这个HR挺不错的,她说我们这种应届生不能看工资,得看公司能给你带来什么,然后她还知道我们前端领域有个名人在她们那儿,,,其实我并不怎么关注,毕竟自己不追星啊。当然她们的Node团队在杭州也挺有名的,这个我真没关注过。后来没下文了,说是她问问前端leader要不要打个电话给我...被安慰一波了。
有赞凉
之前听说有个技术一般的妹子去了,拿的工资比我在南京的还高,就想去当个冤大头了。结果也是gg...T_T
第一轮电面,和蘑菇街差不过,基本的前端知识和计算机相关的,由于大学里组成原理没好好学,直接说不会了。。。
让我印象深刻的是做的两个在线编程题
- 深度优先遍历,妥妥的
- 解析url query字符串成对象。这个就随便写了点,然后面试官一直问怎么怎么写的更好。。。主要就是容错处理,当时没想这么多,因为面试官一直问,所以我也只能问他还有什么地方要改进的。到最后他说如果你要写一个库,你会这样一直问别人么?吐槽一句,我不写,就算要写,那也只能写测试再改进,光空想又没用。最后问建议时,他说多逼下自己,这很玄学。。。
HR那里没话说,大家都看着我不想说他们。一个劲儿地问为什么从南京那家公司离职,打破砂锅问到底了要。算了,也不在乎了
酷家乐凉
其实之前在南京的 时候有陪一个妹子参加校招,但是那个妹子没过,之后电面一轮后没接电话了。。。
一轮电面是个妹子,感觉问着挺靠谱的,问了前端基础。曾一度以为凉了,后来又接到了二面电话。。。对了,关于劫持对象属性的存取操作除了getter/setter外,还有es6里的Proxy,这个自己没用过,妹子告诉我了,点个赞
二面去了,做了份笔试题。当面试官问的时候,发现自己对this存在很大的误区。看下面的代码:
var a = 'xx';
function b() {
console.log(this.a === a);
}
b(); // true
(function () {
var a = 'xxx';
console.log(this.a === a);
})(); // false,this.a为undefined
我一直以为那个闭包(打脸,其实就IIFE)里面有自己的this,想当然就说了,打脸。其实加入作用域链的概念就很清楚了。
始终记住,
this一直指向执行上下文(又称词法环境),它是会变的;而作用域链则是你写完那段代码之后就能确定了(当然这是由js解释器确定的)
额,再多废话点,记录下
- 四种绑定
this的方式:call\apply\bind\箭头函数 - 延长作用域链的两种方式:
try-catch和with
回到面试,有问到Iterator,之前有看过,但是忘了。它是种遍历机制,供for-of循环使用,没用过。。。手写一个Promise.all,只是大概实现,我卡在如何判断每个Promise都resolve了,大致代码:
this.all = function (arr) {
arr.forEach(val => {
val.then(xx).catch(xx);
});
}
就写了个循环(笑哭),不知道怎么判断全部完成,因为代码是异步。。。然后面试官指出在每一个Promise的then里判断。然后又问它返回什么,我说返回this,面试官可能想要的是.then里的返回吧,两人瞎BB了半天。之后又问了个new操作符做了什么事,不知道。真的慌了,后来知道都是基础,也感谢他,让我明白自己这么多不足。这边抄MDN上的解释:
- 创建一个继承了Foo.prototype的对象
- 将
this绑定到之前创建的对象。如果Foo里有显式的返回一个对象,那就返回;没有则使用创建的对象
瞎写点代码:
function Foo() {
this.a = 'xx';
}
new Foo();
class A extends B {
constructor() {
super();
this.a = 'a';
}
static c() {}
}
第一步如何继承的,其实就创建一个对象,把__proto__指向了Foo.prototype。class就是构造函数的语法糖。其实js里原型就那么回事,盗用一张MDN上的图
算了算了,不说了
为什么会写这个,也是看了掘金上的Android应届生在杭州的求职经历,才想到写来看看。不说了,继续写自己的博客,继续找工作。
碰巧今天有个在中科院的同学问我RestFul API,因为他在搞深度学习,不是开发这一块的,所以不了解。我在想以后是不是能找他要资源,也去搞深度学习去,嘿嘿嘿~yy一波
写在最后
很感谢一家公司,众合科技。之前说中意的就是这家,这是个非常好的机会,从C/S转B/S,做的好能带团队。HR面的时候给了6K,当时也迟到很久,就是因为住的地方远,做了三小时公交。后来HR又给电话,说是用人单位加了1K,觉得很感动,当时面试的时候觉得人就很好,说话平易近人,还请我吃了顿午饭,后来推了也是非常抱歉。
找份好的工作不容易,现在天气又很热。希望其他应届生能找份好工作~不过话说回来,宁缺毋滥!