前端面试问题收集与分析

162 阅读7分钟

面试官应该摆正心态

  • 求职者和自己都是平等关系
  • 求职者能力有强有弱,面对能力强于自己的不用卑微,面对弱于自己的也不用藐视,无论谁强谁弱,都不过是打工人而已
  • 面试者多的时候,确实可以问一些偏/怪/原理问题,达到筛选的目的,但应该是实际工作问题中衍生的偏/怪/原理问题,而不是为了问偏/怪/原理问题而问偏/怪/原理问题。

求职者应该摆正心态

  • 应该以平等心态面对面试官,大部分情况下,谄媚或怯弱并无太大意义,你的职业素养或专业技能或工作能力或沟通能力才是你通过面试的关键
  • 有些面试官可能让人感觉瞧不上自己或者面试官感觉自己有一份优越感,此时你更应该放松心态,不妨将这当作一场逆境沟通游戏,无论对方的态度/语气是什么样的,你只需冷静回答他的与工作相关的问题即可,其他不相关的直接忽略。
  • 求职前应该做一些必要准备,尽可能引导面试官问你擅长的东西,如果被问到你不擅长的,你稍加思考,如果有思路,那就回答,如果没思路,直接告知对方自己不会,嘴硬意义不大。
  • 你可能被一些面试官问的哑口无言,这时有可能是你的知识储备不足,也有可能是你的知识面和面试官的知识覆盖面差异很大,对方刚好问的都是你的知识盲区,这都很正常,事后复盘总结即可。
  • 求职的时候,应该侧重体现你擅长的东西,而不是体现你这也能干,那也能干,除非你目标就是打杂的,而对方也就是想招个打杂的。

项目介绍

  • 可先询问面试官是否想听你介绍项目,如果对方不想听,就让对方直接问其他问题
  • 部分面试官可能会对你说,你的项目太普通了,有没有什么是别人没有,但你有的,此时你不要进入误区,去想你有没有0-1突破的这种项目特性(当然,如果有那就可以直接说),如果没有,那可以适当分析:其他中小型公司的项目组大概率没有,或者有但不太容易实现的功能或特性
  • 需要在问答过程中,找出面试官感兴趣的点

项目如何介绍?

  1. 先介绍项目的背景和原因
  2. 再介绍主要使用技术,以及为什么选择了这些技术而不是其他替代品
  3. 主要功能或特性讲解
  4. 一些辅助性工作讲解(规范化,工程化,文档生成,打包优化等)

示例

求职者: 请问你是否需要我进行项目介绍? 因为部分面试官可能因为各种原因并不想听
面试官: 那你介绍下你的项目
求职者: (先说下是简历中的哪个项目,然后介绍下项目背景,原因和主要采用技术)
求职者: 
        我个人将项目分成几大部分,请问你想了解哪部分,或者说要我都简单介绍下
         * 项目规范化
         * 项目功能点
         * 打包优化
         * 文档编写
         * 为方便开发或问题排查做出的一些额外工作
面试官: 你的项目太普通了,有没有什么是别人没有,但你有的
求职者: (如果有)直接介绍
求职者: (如果没有)简单介绍下其他中小型公司可能没有的,或者难以实现的东西(注意:此时介绍要尽可能简短,然后看对方是否对你介绍的东西感兴趣,因为你不知道对方的意图,如果对方对你说的不感兴趣,你说再多也意义不大)
求职者:(如果没有,且个人也没觉得有什么有特色的东西,那直接回复没有,然后主动让面试官问其他东西)

面试官认为你的某个解决方案不可行

一个问题,大部分都有多种解决方案,如果你的方案被面试官认为不可能,而你确定这是自己做过且可行的,那只需冷静的说一次你的解决方案是有效的,不用和面试官过多争执,争辩意义不大

面试官认为他的某个解决方案更好

你可以询问下他的解决方案是什么,然后和自己的做个简单对比,如果确实如此,那么恭喜你得到了一个更好的解决方案,如果不是,那你可以稍加对比说明,如果面试官依然坚持自己的想法,那你不要过多与对方争辩,因为争辩的意义不大

具体问题

以下只是个人认为的考察意义,不排除有的面试官只是因为别人都这么问所以自己也这么问,没想过要问这些东西的实际意义的情况

自己实现Promise

考察的意义:

  1. 看你是否有注意过 promise 的结构和特点
  2. 后续可以继续问事件循环的东西
  3. 后续可以继续问实际应用层面的东西

浏览器事件循环

考察的意义:

  1. 确认你是否知道js本身是单线程的
  2. 后续可以考察你执行顺序问题

自己实现call函数

考察的意义:

  1. 考察你对ES的继承是否有一定了解
  2. 考察你对this的理解
  3. 后续可以继续问节流/防抖的相关问题

js数据类型

考察的意义:

  1. 考察你最最基本的知识是否具备
  2. 更多的可能是后续衍生问题:如:如何精准/快速判断一个变量的数据类型
  3. 基本数据类型和对象数据类型的区别,特点。对于对象类型是有可能由于内部或外部的修改,导致一些非预期问题的,然后还可以考察你如何实现对象克隆

vue2/vue3区别或优略

考察意义:

  1. 判断你是否都有用过,更擅长哪一个
  2. 方便后续问你一些细节问题:如:vue2的data为什么是一个方法

当文字内容超长有省略号时,需要显示title,否则不显示title

考察意义:

  1. 判断你对offsetWidth和scrollWidth的应用理解

什么情况下会造成JS内存泄漏?

考察意义:

  1. 考察你是否遇到过这类问题
  2. 考察你是否有注意这些细节
  3. 查看你是否有对应的解决方案

一些css问题

默认主体内容居中,两边留白,当浏览器视口足够大时,主体内容宽度固定,否则主体内容宽度100%

main{
    max-width: 1000px;
    margin: auto;
}

内容少时,页脚在浏览器视口最底部,内容多时,页脚在内容的最底部

main{
   /* 60是页脚高度 */
   min-height: calc(100vh - 60px);
}

左右布局,左边3个div,右边3个div,使得这6个div的高度与其中最高的保持一致

采用css的table布局,使得div变为表格的单元格,那么div的高度就会保持一样了