IMWeb提升营 | 第三次课堂直播笔记:细解鹅厂面试题

来源:互联网 发布:webpackdevserver端口 编辑:程序博客网 时间:2024/06/05 14:19

1 面试的目的

寻找合适的人

1.1 面试主要环节

  • 自我介绍 3-5min
  • 问答环节 20min
  • 手写代码 15min
  • 拓展性问答 10min(潜力,问一问还有没有其他擅长的东西)
  • 提问 5min(面试者反问)

1.2 面试形式

  • 笔试题
  • 问答式
  • 现场手写代码
  • 问题探讨(一般没有答案,主要看面试者思维逻辑的跳跃性和逻辑性是否跟得上)

2 前端面试

2.1 重点考察的能力

  • 编程素养
    • 对于语言特性理解到位,不同语言之间的不同特性使用场景
    • 具有良好的手写代码的能力,主要是平时多写代码,现场写代码不会让你用框架,一般用原生代码写
    • 具有良好的编程思想,有一定的实践后的理解,比如,用的一些设计模式和框架,不仅仅会用,还知道为什么要用,原理是什么
  • 思维逻辑
    • 观点表达清楚:清晰的表达观点,并把逻辑梳理出来。打个比方:如何实现无人驾驶,回答不一定要真的能实现,但是能把思路回答出来,首先系统分成几个模块,哪几个模块由什么来完成之类的。
  • 知识经验
    • 项目经验:对于做过的项目实现原理理解到位,最好能有一些自己做的小项目的demo,比如说自己实现过的一个最复杂的Web项目是什么,怎么实现的,遇到了什么困难
    • 实习经验:如果有实习过的话,最好能有一些问题的处理经验,怎么处理的,谈谈方法和思路,以及总结。

2.2 主要方面

  • 前端基础
  • 编程基础
  • 其他
    这里写图片描述

前端基础

  • 其实面试的时候面试官不会要求面面俱到,毕竟面试者不是万能的,一般面试官会先问你最擅长的是什么,然后细问最擅长的一些点,如果也回答不好,那就会减分。
  • 回答的好坏不是说全都能回答出来,但是一些具有挑战性的题目可以回答的很好,就会加分

计算机编程基础

  • 对于前端要求不高,但是一定会问
  • 算法是最基本的编程素养的一部分

其他

  • 拓展性的问题一定会问,但不固定
  • 比如问学习方法
    • 同学你最近在看的一本关于前端的书,看的前端的博客,跟我谈谈
    • 通过了解这些去了解同学的学习的频率和学习的效果

3 面试怎么问

3.1有哪些问题

  • 1 知识性问题
    • 请说出JS作用域的理解
  • 2 编程思维问题
    • 对组件化开发的理解,阐述价值
  • 3 挑战性问题
    • 对于刚刚提到的方案有没有性能问题,可以怎么优化
  • 4 引导型的问题
    • 除了你刚刚说的方法,还能不能想到性能更优的方法

3.2如何更好的回答面试题

  • 1.准确的理解问题,读题
  • 2.清晰的阐明观点,分条列述
  • 3.给出分析的思路,结果不一定对,分析的路是对的,面试官也会给点分
  • 4.真诚面试最重要,没有哪一条道路可以通往真诚,真诚是通往所有的唯一道路。

3.3这样的面试不可取

真诚面试不要做以下的事情

  • 不懂装懂,面试官看的出来
  • 伪造项目经历,经不住深挖
  • 与面试官争吵,对自己不利
  • 太过于张扬,容易引起反感

4 真实面试

##4.1 实现Object的深拷贝
思路

  • 做遍历,利用浅拷贝完成深拷贝
  • 遍历过程中会遇到不同类型,分类处理

考察

  • 思考问题的深度
  • 紧急问题的应对

5 常见问题

  • 1.碰到不会的问题怎么办
    • 一定会碰到,一般面试官如果没有提出你不会的问题,不会罢休的。
    • 说一下其他思路,询问面试官可以说思路
    • 说一下现在暂时不会,但是如果给我时间,我会怎么去获取资料和学习解决
    • 一般不要直接说不会,实在不行可以说不会,真诚一点
  • 2.我不知道面试官问的问题,但我知道有其他思路,是否有必要回答
    • 可以的,可以先问一下面试官的许可
  • 3.面试前端会面试算法吗
    • 会的,算法体现个人编程能力的理解
  • 4.如何给面试官提问
    • 面试官一般会给你5分钟,聊嗨了的会给更多的时间
    • 面试前有意识的准备,比如了解职业未来的方向,部门的定位和发展

模拟面试

第一个模拟面试

  • 先做一下2分钟自我介绍(了解做过的项目)
  • 说一下你觉得最复杂的项目
  • 说一下这个项目中你觉得最难的点

以上是常见问项目的套路:好几个最的问题

评价第一位模拟面试者:

  • 1.自我介绍:时间过长了,可以简单说一下自己是XXX来自哪里,目前做了哪几个项目,在这些过程中获得了什么技能和经验积累,对前端的热爱
  • 2.最难的项目:直接问某个项目并不能体现面试者的能力,所以直接问最复杂的项目,面试官的用意其实是想知道复杂项目中有哪些点可以体现你的能力
  • 3.最难的点:全面的描述这个难点,分析为什么这个是有挑战的,然后自己尝试了多少种方法,最后才成功的
  • 经过一系列问答,就可以考察面试者阐述问题的切入点和思路

第二位模拟面试者

  • 先用一分钟自我介绍
  • 对你的技能排序,最擅长的是什么语言
  • 解释一下什么是闭包
  • 什么时候会用到闭包
  • C++四个作用域的原理
  • 怎么实现一个功能把内部变量封装出来被调用
  • 闭包可以通过模块化来隐藏独立变量,还有什么方法,或者模式
  • JS模块化开发主要指的是什么
  • 在nodejs开发里,有cmd,知道是什么吗
  • 后端有用过什么框架吗?express
  • 看过这个框架的源码吗
  • express有中间件的概念,能谈一谈原理吗

以上是一些知识性的问答

对第二位面试者的评价:

  • 对于知识性的问答,希望能够对一些概念的原理有所了解。
  • 闭包、模块化方式、cmd方式、amd方式、和其他的区别
  • 问框架的时候,其实不是想听到某些接口是怎么用的,主要是想了解,如果没有用过,那就看看有没有什么了解,如果用过,就希望看看面试者有没有看过源码实现
  • 如果是压力面,也是很常见的,让面试者感觉怎么自己老是回答不出来
  • 在自己回答不出来或者想不起来的时候,可以让面试官提示一下的

6 Q&A

  • 1 为啥有些笔试考试考C语言
    • 因为比较通用,计算机的学生都有学到,所以尽可能复习一下C语言语法
  • 2 如果进行项目积累
    • 可以把项目放到GitHub上
  • 3 单页面里如何使用PV
    • 可以有一些ajax请求
  • 4 实战项目
    • 可以找一些开源的项目,自己重写都可以
  • 5 设计模式ES6和OOp的掌握程度
    • 是加分项,概念性的要掌握和准备
    • 大家肯定到不了企业级应用,但是可以写一下小Demo
  • 6 UI测试
    • 是有一些自动化测试工具的
  • 7 面试重视JS的设计吗
    • 看岗位需求比重,比如有一些重构工程师,对JS的逻辑性要求比较高,对CSS要求就比较低,JS偏逻辑,HTML和CSS偏标记性语言,逻辑性没有那么强
    • 有一些岗位就对逻辑性要求没有那么高
  • 8 资源推荐
    • 可以去搜一下“前段资源体系”,有一个开源项目是介绍前端知识体系的
  • 9 框架影响大吗
    • 看面试官的喜好,有些面试官是问道框架就会问问原理,最好还是能够对原理有了解
    • 平时原理的了解,知识的积累,很重要
  • 10 算法
    • 算法还是很重要的,刷刷题
    • 不一定要看算法导论那么厚的,但是还是要看一些算法书整理一下
  • 11 React native和其他框架Habriac的了解
  • 12 转方向到前端
    • 看决心,看平时项目开发,参与到论坛里的开源项目的讨论
    • 循序渐进
  • 13 熟悉了SSH开发的后端知识,对前端有什么帮助
    • 对于全栈工程师有什么帮助

最后的话

  • 面试时一面镜子,照出来平时的你
  • 所以工作重在平时
  • 好的面试官一定是发现真实的你,所以一定要让真实的自己变得足够优秀
原创粉丝点击