【最新面经】海归硕士的社招经历

268 阅读6分钟

大家好,我是雷布斯。

很久没有给大家分享面经了,咱们今天就来学习下,一位3年工作经验的海归同学,她的社招面试经验。

一、背景

先来简单介绍下这篇面经的背景。

这位同学是是第一批参与我们辅导的同学,她当时参加的是简历辅导,我们针对修改后的简历,提出了不少复习建议。

这位同学大四就去法国交流一年,之后直接在法国读的硕士,毕业后就在国外的一家旅游公司做前端开发。

无论从学历、工作经验、还是技术能力上,这都是一位很优秀的同学,执行力和学习能力都很强,她的意向城市是上海或者杭州。

二、面试总结

下面就直接进入她的面试总结。

7月中旬到8月中旬,我面试了多家公司,有大厂、中厂、外企、初创、外包,面试风格各不相同。

2.1、考察方向

先列举一下各家公司喜欢考察的方向:

  • 算法

人工智能相关的公司很喜欢考算法,对算法要求也高。有的公司会在最后出个简单的算法题,说出思路就给过了,也有完全不问算法的。

  • 八股文

大部分公司还是会考八股文的

  • 场景题

半数出现几率,主管会根据真实碰到的问题来询问你的解决方案,没有经验很难答好

  • 判断题

少于半数出现,根据一段代码说出输出,说出如何修改代码来实现预期输出

  • 编程题

少于半数出现,根据题目要求编写函数

  • 作业题

较少出现,发送一道编程题限时1天内提交工程源码,可能是一个页面的实现或者类的实现

  • 英语

外企大多使用英语描述题目和需求

2.2、面试方式

不同公司的面试风格和方式都不太一样,我经历过以下几种:

  1. 从简历里项目开始聊,徐徐渐进每个知识点,延伸至相关问题的解决方法
  2. 面试官之前完全没有阅读过简历
    • 要求候选人介绍技术背景、最有成就感的项目,临时根据这些信息来提问
    • 完全抛开简历,直接问有没有用过这个,原理是什么
  3. 一上来就要求做个算法题,不过直接88

三、面试题

3.1 JS

  • 原型链(改变原型上的值)
  • let const,var 变量提升
  • 如何实现深拷贝
  • 操作 dom 节点(dom.querySelect)
  • 箭头函数
  • 数据类型
  • 循环数组(for 循环的优点)
  • map forEach 的区别
  • map函数和filter函数
  • 模版字符串
  • reduce
  • 如何解决精度问题
  • 0.1+ 0.2 === 0.3
  • 如何将 0.2 转换成二进制
  • undefined 和 null 的区别
  • 变量未声明和未定义的区别
  • event loop
  • 浏览器缓存

3.2 CSS

  • position 的 relative absolute
  • display 常用的值
  • 盒子模型
  • margin 折叠
  • 如何清除浮动
  • css 选择器有哪些,> +
  • 微信小程序 rpx 的样式换算规则
  • 小程序设计图的推荐尺寸

3.3 网络

  • 用的 http 请求头
  • GET POST 在跨域请求时有什么区别
  • 三次握手四次挥手
  • TCP 和 UDP 区别
  • HTTP 和 RTMP 区别
  • HTTP 是单向连接还是双向连接的
  • 程序运行中进行 http 请求是在单独的线程吗
  • 跨域 cros
  • 强缓存和协商缓存

3.4 React

  • 更新组件的生命周期
  • 挂载组件的生命周期
  • useEffect 模拟的生命周期
  • react hooks 只执行一次 ajax 请求
  • useCallback 什么情况下包裹函数,有多个 state 时会不会执行多次
  • react 中 setTimeout 的回调中执行 setState()
  • 怎么防止组件的重新渲染
  • 组件渲染的逻辑,diff 算法,层级不能过深
  • react redux 的伪代码
  • 有没有看过源码
  • react 的原生 api

3.5 场景题

  • 如何生成一个海报
  • 如何实现图片的懒加载
  • 如何渲染长列表
  • 白屏可能的原因
  • git操作,clone,rebase,merge,stash,cherry-pick
  • 如何判断设备是 PC Mobile
  • 多个http请求后执行操作
  • 如何控制 input 的输入个数
  • 如何控制 input 输入 中文和英文的个数
  • 用户连续点击提交
  • 中奖概率使用 Math.random() 会有什么问题
  • 一个滚动公告组件,如何在鼠标滑入时停止播放,在鼠标离开时继续等待滑入时的剩余等待时间后播放

3.6 算法

  • 只出现一次的数字
  • 层序遍历二叉树
  • 遍历2个链表,遇到相同的可以相互跳转,计算最大值
  • 返回二叉树,一层一个数组

3.7 判断题

  • for 循环 let 和 var 的区别,内部有 setTimeout 会是最后一次 i++ 没通过判断的值
  • async 函数执行时的错误返回会不会被同步代码捕获
  • redux 的一个 reducer 函数(不能执行副作用)
  • 函数参数的默认值和解构赋值语法
  • 闭包函数返回2个函数,返回同一个私有变量

3.8 编程题

  • 低代码,将 json 还原为 dom 节点
  • await 后执行一个等待函数,实现函数的暂停
  • 正则表达式筛选出数组中只包含大小写字母的字符串,并将结果转换成大写
  • 编写计时器
  • 根据身高,体重,身高差排序学生数组
  • 九宫格输入法
  • 范围列表 rangeList
  • 展开多维数组

3.9 其他

  • 原生ajax请求
  • 伪装攻击 csrf
  • webSocket 的安全策略
  • 前端性能怎么优化
  • 自动埋点
  • TS 定义类型
  • 有没有看过其他开源项目
  • webpack 使用过的插件和loader
  • 项目属于 BS 还是 CS 架构,什么时候被称为 CS
  • 有H5公众号网页为什么还要做微信小程序

四、总结

这位同学经过一个月的面试,最终是收获了心仪的offer。

今年的就业行情不好,这位同学在找工作之初,也是有些焦虑,在找了一些小公司练手,找回了面试状态,后面的面试也发挥的很不错。

回顾整个面试题目,我觉得最考察人的,还是场景题,这也是很多中大厂喜欢的面试方式:给你一个场景,让你提出解决方案,对个人的技术能力和视野都能进行较好的考察。

比如上面有一个题,区分用户的访问设备,可能大部分的人都只能答出 navigator.userAgent,但如果你能回答更多的方法,是可以给面试官留下更好的印象。

再给“前端面试题宝典”的辅导服务打下广告,目前有面试全流程辅导、简历指导和模拟面试的增值服务,如果有感兴趣的伙伴,可以联系小助手(微信号:interview-fe)了解详情哦~

文章首发于微信公众号:”前端面试题宝典“,原文地址请戳这儿,可直接通过微信链接查看对应的题目答案。