阅读 55

记录一次蚂蚁金服的前端面试

坐标成都,大专,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适用于有一定基础的前端,还望大家多多支持,谢谢。

文章分类
前端
文章标签