凡科面试总结

凡科是我第一次实习面试,很久没有看“红宝书”,很多基础的知识都忘了,在收到面试通知的时候有点手忙脚乱,开始投入准备,我的准备工作主要是一下几个方面

  • 看高级程序设计,不愧是红宝书,几乎包含所有的内容,不过也有一个缺点,就是内容太多,时间太短,反而不知道从哪里下手
  • 看别人总结的面经,自己没有面试过,所以看别人总结的面经是一个最能够模拟面试的过程,并猜想面试官会从哪些问题去问自己
  • 看前端经常问到的问题,由于时间关系,所以选择“捷径”,捷径有风险
  • 问大神,取经!毕竟自己太多不足,所以还是有必要向大佬取经

25号中午收到的面试通知,27号中午要面试,中间短短两天的时间,把能够复习的地方都看了一遍,不过真的很多知识点并没有深入,也有的知识点没有复习全,之类需要后续补上

面试前

  • 这里我指的是要了解自己去的这家公司,了解它的文化理念,了解它的团队,了解它的产品等等,毕竟知此知彼百战不殆!而且,你不小心成功的话还是要去那里学习工作的,公司对你的影响务必考虑
  • 还有了解你所要面试的情况,是直接面试?还是直接笔试?还是笔试后+面试?这些最好能够在对方通知你去面试的时候问清楚,不清楚的话,最好打电话问清楚,因为这个对准备面试很重要

笔试

五道题目,都很经典,自己做得不怎样,而且其实不算难,关键要细心、细心、细心!而且要陷阱!

  • 给出一段代码,写处输出结果
    这道题主要考察的知识点有,for循环、作用域链的解析、变量的声明。重点应该是考察作用域链,面试官问从作用域链的方面解析这段代码。

自己的解答,一开始以为是闭包,后来发现不是,然后发现就是一个函数调用,只是全局变量中和函数中都有i的值,其中函数中的i没有使用var声明(这就是第一个坑,自己在这就掉进去了)然后其他的就是作用域链的解析了,这个需要接下来好好总结下了。

  • 考察闭包,就是“红宝书”P181的案例模式
    自己是理解的,结果还是栽在数组越界上(这是第二个坑),在for循环中导致数组越界,所以后来输出的结果是undefined
    面试官追问:用什么方法,可以使结果和预期一致?
    我说了“红宝书”中的一种,描述得不好(自己理解不够)。然后面试官自己给我举了其他的解决方法???(啊啊啊,脑子短路,记不起了,自己百度了)

如果是之前的写法,每个函数的作用域链中都保存的是createFunction()函数的活动对象,所以他们引用的是同一个变量i。当createFunction()函数返回后,变量i的值是10,此时每个函数都引用着保存着变量i的同一个变量对象,所以每个函数内部i的值都是10.

我们可以创建另外一个匿名函数强制让闭包的行为符合预期。如下所示:

function createFunctions(){
    var result = new Array();
    for(var i=0;i<10i++){
        result[i] = function(num){
            return function(){
                  return num;
              }
        }(i)
    }
    return result;
}

这个时候我们不是直接将闭包的值返回赋值给数组,而是定义了一个匿名函数,将立即执行该匿名函数的结果赋值给result.这里匿名函数接受一个参数num,也就是最后返回给数组的值。在调用每个匿名函数的时候,我们都传入一个变量i。由于函数的参数是按值传递的,所以变量i的值就被赋值给了num.而在这个函数的内部,又创建了一个访问num的闭包,这样就可以解决那个问题啦~

  • 考察CSS
    这道题相对简单
  • 数组重组
    自己写的程序少了sort()方法,还有效率不高,百度又很有关于js数组重组的内容,务必深入探讨一下
    第一种方法总结:(最简单的方法)
function removeRepeat(arr){
   var lastArr = [];
   for(var i=0;i<arr.length;i++){
       if(lastArr.indexOf(arr[i]) == -1){
           lastArr.push(arr[i]);
       }
   }
   return lastArr;
}

第二种方法总结:(数组下标判定法)

function removeRepeat(arr){
    var lastArr = [];
    for(var i=0;i<arr.length;i++){
        if(arr.indexOf(arr[i]) == i){
            lastArr.push(arr[i]);
            console.log(lastArr);   
        }
    }
    console.log(lastArr);
}

第三种方法:(排序后再相邻比较法)

function removeRepeat(arr){
    var lastArr = [];
    arr.sort();
    console.log(arr);
    for(var i=0;i<arr.length;i++){
        if(arr[i]!=arr[i+1]){
            lastArr.push(arr[i]);
        }
    }
    console.log(lastArr);
}

第四种方法:(推荐用法)对象键值对法

function removeRepeat(arr){
    var lastArr = [];
    var lastObj = {};
    for(var i=0;i<arr.length;i++){
        var val = arr[i];
        if(!lastObj[val]){
            lastArr.push(arr[i]);
            lastObj[val] = 1;
        }
    }
    console.log(lastArr);
}

面试官举了一种效率比较高的查询,好像是哈希查找的,可以少个for循环

  • 最后一道题,他说不做要求的,不过我写了他也就跟我聊
    涉及到的知识点有:with(用得比较少),eval方法

笔试小总结

  • 陷阱很多,所以看代码要仔细,要认真
  • 关于一些常见的笔试题要有所准备,像重组就应该有所准备(要每天去牛客网刷下题目)
  • 面试官还是很看重更深的知识、更全的知识,后面的面试更是有这种体会(所以知识点不是了解就好)

面试

笔试后接着就是面试,面试面试官先从笔试题这部分开始,然后就是简历上的了,(可能是发觉我太渣了,没有问项目相关的问题,这是个悲伤的故事)

  • canvas实现画笔的时候,画笔点击画布会触发一系列怎样的事件???(移动端)
    自己挖的canvas坑,哭着填完,我只答出一个click,药丸!其实是有touchStart,toucuEnd,mouseover,mousedown等等(自己事件这一块没来得及复习,问得我**)
  • 怎么获得坐标
    就是经常自己要百度那几个东东,所以要将自己经常要百度的东西记录一下
  • 垂直居中知道哪些方法?
    我就答了两种:line-height==height,以及position布局来处理的方法,还有一个vertical-align:middle(又给自己挖了一个坑)事后深入了解吧,面试官也给自己讲了一下
  • 清除浮动的方法
    这个自己答得还不错,面试官深入问overflow:hidden原理的时候,自己就说BFC(感觉打了一次擦边球)
  • 关于BFC的深入?怎么作用的你了解么
    回答的不好
  • 关于性能优化
    自己有些准备,答道引用外部文件的时候,他问了为什么?我也是简单靠自己的理解,不过js那块有更深入的理解
  • 阻止事件

面试总结

  • JavaScript比较少问,可能是从笔试上有所体现了吧
  • 知识点不全,不够深入
  • 回答问题之前可以整理一下思路,回答的时候做到表达清晰

总结

  • 凡科,这家公司给我的感觉好好,前台的服务很nice,面试官很nice,环境很nice,给了我很大的动力望这种公司努力,这是面试的其中一个收获
  • 了解了自己好多不足,不过也有好的一点,就是再次看起“红宝书”,感觉脉络好像清晰很多,很多可以比较快的掌握
  • 对一些经常面试到的知识的总结还是太少,多刷面经多刷题目

其他:

  • 面试要准时,自己早到40分钟吧,我觉得这方面做得还好,面试的过程注意尽量放轻松,举止自如一点(其实面试也就是跟别人交流经验)。尊重面试官,等面试官说完自己再讲话,给人留下好印象。

注:上面很多并没有整理答案,还要进一步的整理。

参考资料:
纯CSS实现垂直居中的几种方法
Flex 布局教程:语法篇
Flex 布局教程:实例篇----包含一些布局介绍
前端面试题精讲系列 说说JavaScript的事件绑定方法并举例
clientX,screenX,pageX,offsetX的异同
js数组去重的5种算法实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • 凡科(2017.9.4) 秋招的第一站,其实上半年去面试的第一个公司也是凡科,现在也是从这家公司开始,也算一种缘分...
    Gopal阅读 5,316评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,846评论 25 707
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,602评论 18 399
  • 2016.9.20 反复出现的问题,是作风的问题。 抓生产规范所悟。
    正午阳光CEO阅读 195评论 0 0
  • 1.感激老公中午提前回家炒的咖喱饭,非常好吃。感激婆婆为了让我多睡一会儿她洗了碗。 2.感激张老师对我的课提出质疑...
    不倒姑娘阅读 126评论 0 0