Skip to content

聊聊校招面试 #13

@DelBlank

Description

@DelBlank

工作两年有余,最近有机会去面试下刚毕业或即将毕业的校招生,由于之前没有当过面试官,缺乏经验,无法像其他经验老道的面试官一样可以随性地问问题,所以记录下自己打算问的问题方便到时候临场发挥。

面试不是变着法的刁难被面者,而是想办法考量和挖掘被面者的知识和潜力。

对于校招生,我更倾向于考察他的学习能力和思考能力;对于社招, 我更倾向于考察他的知识广度和深度以及系统设计能力。有些面试官在面试校招生的时候喜欢上来就出一些比较难回答的问题,希望借此考察他的抗压能力,我更倾向于循序渐进,慢慢地加大问题难度,因为校招生本来社会阅历少,容易紧张,上来就施压,可能达不到好的效果。

下面是我准备的面试题,分为 项目经历前端基础网络基础算法编程框架原理其他。每个模块题目难度按照由易到难进行排列。

项目经历

一开始的时候,我会让面试者做个简单的自我介绍,缓解下紧张的情绪,然后看简历挑一个项目(或者让他自己挑一个)让他描述下,项目背景、项目目标用户、项目开发流程、自己负责哪块内容、有没有碰到什么问题又是如何解决的,自己有哪些收获等等,期间可以穿插着问一些基础知识。这块主要是为了考察面试者的表达能力、总结和思考能力。

如果没有项目经历,我会问他有没有写过一些博客什么的。如果既没有项目经历,又没有些博客习惯,在校成绩还一般,到这里我就会开始质疑他平时的学习主动性了。

前端基础

这块我主要会问 javascriptcss ,至于 html 相关的,我一般不问,如果有 typescript 经验,我也会问一下对 typescript 的理解。

javascript

  • 5 种基础类型,undefinednull 区别。
  • new 一个对象背后的原理(创建空对象 -> __proto__指向 prototype -> 替换 this -> 判断返回值类型)。
  • forEach map reduce 的区别
  • 闭包理解、应用、坏处、取消闭包、判断闭包代码片段输出、柯里化(连加)
  • call apply bind 区别,实现一个 callbind
  • 怎么理解 js 是单线程的说法
  • 有哪些异步处理方法,有什么区别

ES6

  • letvar 的区别
  • 箭头函数与普通函数区别
  • class 继承原理
  • importrequire 的区别

typescript

为什么用 ts 不用 js, ts 相比于 js 有哪些优势。

css

  • display: nonevisibility:hidden 区别
  • css 盒模型
  • position 取值有哪些,分别是什么含义
  • css 选择符和优先级计算
  • 实现垂直水平居中
  • flex 布局,骰子

网络基础

  • http 请求码含义
  • GET / POST 区别
  • http 和 https 区别
  • 接口设计(原子性,鲁棒性)(有接口服务开发经验会问)
  • osi 分层模型,子网掩码作用和计算,TCP 三次握手和四次挥手(有计算机背景会问)

算法编程

  • 交换两个变量值(不使用三方变量)
  • 斐波那契数列
  • 最大值,第二大值
  • 两个栈实现一个队列
  • 爬楼梯(一步两步)
  • 冒泡、快排
  • 括号匹配
  • 树深度遍历和广度遍历

框架原理

一般针对面试者使用过的框架进行提问。

react

  • 初始化到挂载的生命周期
  • 展示组件和容器组件
  • HOC 的两种方法(属性代理和方向继承)
  • key 的作用

vue

  • 双向绑定原理

redux

  • redux 定位,数据流,为什么需要 redux。

webpack

  • loader 的加载顺序。
  • loader 和 plugin 区别。

node

  • require 原理
  • koa 中间件洋葱模型

npm

  • 版本 semver version
  • dependencies devDependencies peerDependencies 区别

其他

一些开放性问题。

  • 为什么选择前端。
  • 有收到其他公司 offer 吗。(遇到好苗子,担心被拐跑 T T)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions