坐标成都,大专,4年前端,分享一次自己在蚂蚁金服的面试经历。
一面
- 1.自我介绍
答:我是XXX,经历。。。。
- 2.vue data响应式的实现
答:啪啦啪啦说了一大堆,感觉我很兴奋。
- 3.vue computed的实现
答:好吧到这里我就卡住了,因为我当时比较紧张了,尽管我内心不停的劝告自己,然后脑海一片空白。
- 4.你在css方面的擅长?
答:我擅长的是css中的定位。
- 5.请详细介绍下定位?
答:static,fixed,relative,absolute,sticky,inherit。然后就它们的用法分别做了介绍。
- 6.你知道浏览器缓存吗?
- 7.你还有什么想问的吗?
略。
二面
- 1.webpack的配置方式和编译过程。
答:这个题比较大,我感觉我答的也不是很好。
- 2.解析URL参数。
我当时的思路就是这样,通过截取到字符串后面的参数,然后通过正则去进行匹配,分别匹配参数名和参数值,它们一定是匹配到二个数组,然后遍历其中一个数组,就可以了。以下是我面试完之后根据思路实现的完整代码,当然面试的时候是肯定写不到这么完整的。
var getURLParam = function(url){
let res = {};
if(url.lastIndexOf("?") === -1)return res;
let param = decodeURIComponent(url.slice(url.lastIndexOf("?") + 1));
let keys = param.match(/\w+\=|\=/g);
keys && (keys = keys.map(k => k.replace(/\=/g,"")));
let values = param.match(/(\=(\w+|\s*)\&)|(\=(\w+|\s*))/g);
values && (values = values.map(v => v.replace(/\&|\=/g,"")));
keys && keys.forEach((k,i) => res[k] = values[i]);
return res;
}
- 3.实现通用的批量更新策略。
let notifyFn;
function fn1(){
notifyFn();
statement1;
statement2;
}
function fn2(){
statement3;
notifyFn();
statement4;
}
function fn3(){
statement5;
statement6;
notifyFn();
}
async function onMount(){
notifyFn = update(() => {
//在statement6执行完之后执行
})
fn1();
await Promise.resolve();
fn2();
await Promise.resolve();
fn3();
}
这道题,我第一次看到的时候是一脸懵逼的状态,完全看不懂这道题的考察点是什么,尽管我问了一下面试官,面试官给我讲了一番,我还是没有听明白。面试官说我们先跳过这一道题,来分析下一道题。
- 4.React基于单向数据流。对于组件间的通信支持不够好。现需要模拟一个全局的EventStore。使得可以满足以下条件,以支持组件间的通信。
class Event {
}
// 用法
const loader = new Event();
loader.bind("loaded",event => console.log(event));//注册事件
loader.trigger("loaded",{ data:"data" });//触发事件
loader.unbind("loaded");//注销事件
这道题,我看着就像是实现一个事件派发器,也给面试官说了自己的实现思路。
- 5.你还有什么想问的吗?
略。
一面我其实还是做足了准备的,二面由于我自己都觉得我的表现不是很好,所以很显然二天后的我就收到了面试没通过的邮件,我详细分析了一番,最后做出如下总结。
面试总结:
我的二面太急切仓促,没做准备,然后二面面试也没有很好的表现出自己的亮点和能力,最后问问题一环我竟然还没问问题,只是要求面试官可不可以把题记录下来(我本意就想下来研究一番,尤其是第三题)。
事实上,除了第四题我算是以前写过一个类似的,其他题我都是没有准备过而临场发挥。因此,我掉分的关键不在于做题,而是我的表现。我直接读不懂题,然后面试官给我讲了一番,我仍然没有明白,也没有去思考为什么,所以可能这就让面试官以为我放弃了这道题。
整场二面,我在其他三道题上分析的还算中规中矩,但在第三道题,我就很慌张,没有表现出冷静思考的样子,所以这里应该就是我掉分的关键点。
整场蚂蚁金服面试就这样结束了,经过这一次面试也让我知道了自己的不足之处,那就是很容易紧张,心慌。
作为一个程序员,最应该有的态度,就是不停专研,不惧困难,遇事沉着冷静,临危不乱,才能更好的展现自己。而我并没有做到,所以我将在接下来的时间好好准备,充分提升自己,我想希望我能在半年后继续参加面试。
学无止境,路还很长,我还会有很长的路要走。面试过后,经过自己的总结和反思,我终于明白面试官想要考察的不是题的答案本身,而是我有没有解决问题的决心,有没有冷静分析问题的能力,还有自己的思考和理解。
我每天也在练习一道算法题,督促自己好好学习,并记录下来自己的思路,然后整理成了文档网站,欢迎查看剑指offer算法题。
我的开源项目一个使用原生JavaScript编写的颜色选择器,灵活自定义扩展,修改配置对象还能自动更新ew-color-picker。
我的文档已经完善了不少,详细介绍了各个api的使用,希望能够我提issue,这个项目还有很多不完善的地方。ewColorPicker文档网站。
我在思否录制上线的课程玩转typescript1,玩转typescript2适用于有一定基础的前端,还望大家多多支持,谢谢。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。