写点什么

已拿字节、腾讯、墨墨 offer,【面试总结

用户头像
Android架构
关注
发布于: 刚刚

? 掘金-推荐


作者 | Youhe(前端时空)


?

前端时空,每日一题。回复「0」进入交流群,回复「1」看每日一题,回复「2」看答案解析。

?

前言

三月份过去了,笔者的春招实习面试也告一段落了。在这接近一个月的时间,经历了面试时的紧张、失败时的痛苦、拿到 offer 的兴奋。目前面了字节、美团、腾讯、清远墨墨、阿里。并拿到了字节、腾讯、清远墨墨的实习 offer。 这次就先从笔者就从自己的心路历程结合面试干货娓娓道来。(ps:由于笔者没有面试完就及时写面经的好习惯,以至于一些细节有些忘记了。我会在想起来的第一时间回来补充)

「初面试-字节跳动(头条部一面)」

这是笔者人生第一次面试,有些紧张。面试官是一个有点严肃的小姐姐,看到她第一眼笔者就觉得是自己心目中程序媛的形象。


  • 自我介绍

  • css 选择器、优先级

  • 标准盒模型和 ie 盒模型

  • js 继承 (原型式、构造函数式、组合式、寄生式)

  • js 判断类型 (typeof 、 instanceof、 Object.prototype.toString.call)

  • settimeout 和 setinterval 区别 。 宏任务、微任务、异步队列

  • 一道考察 promise 的题


let j = ()=>{return 2}new Promise((resolve, reject)=>{resolve(1)}).then(j).then(req=>{console.log(req); //2})复制代码


  • 说几个 http 字段吧,作用是什么(content-type 、Cache-Control 、Etag)

  • 跨域问题 node 怎么配置跨域 (cros)

  • http 状态码以及代表什么

  • cookie、session、token

  • node 的框架学过吗 express、koa 区别? 这里笔者主要讲了洋葱模型

  • 笔试题 1.广度优先遍历二叉树 2.多维数组压平 3.翻转矩阵 笔试题都不难,是 leetcode 的 easy 原题。


这次面试表现得不是很好,很紧张,写编程题的时候手都在抖。幸运的是当天晚上就被告知通过了。第二天开始二面。

「字节跳动(头条部二面)」

二面面试官是一个小哥哥,没有露脸,全程语音交流。


  • 前端优化 这个题比较开放,可以从减少资源请求、资源大小、优化网络、资源加载、回流重绘等多方面回答。

  • vuex 状态管理存在意义? 单向数据流、集中管理

  • vuex 的 action 怎么触发? dispatch

  • 介绍下项目 、难点? 这个就不细讲了,每个人项目都不一样,答得让面试官觉得你在遇到问题时有思考的过程就好。

  • 笔试题


1.实现一个 add 方法 add(1)(2,3)(4).value() 输出: 10


function add(...num) {let curr = function (...out) {return add.apply(this, num.concat(out))}curr.value = function () {return num.reduce(function (pre, cur) {return pre + cur})}return curr}2.实现一个异步队列 Queue,要求按时间依次执行 callbacknew Queue().task(1000, function () {console.log(1);}).task(2000, function () {console.log(2);}).start()


答案 1:function Queue1() {this.queue = []this.task = (time, fn) => {this.queue.push({fn, time})return this}this.start = () => {let deffer = 0for (let i of this.queue) {deffer += i.timesetTimeout(i.fn, deffer)}}}答案 2:


function Queue2() {this.queue = []this.task = (time, fn) => {this.queue.push(function (resolve) {setTimeout(function () {resolve(fn())}, time)})return this}this.start = async () => {for (let i of this.queue) {await new Promise(i)}}}复制代码


这次面试的笔试题写的时候全是 bug,给面试官留下很不好的印象。不过这次面试结束的时候,面试官给了我一些学习上的建议,并给我一定的鼓励。晚上的时候 HR 来点说要进行评估,无奈评估未通过。不过想起二面时面试小哥哥对我的鼓励,决定再战。

「清远墨墨」

笔者最开始接触清远墨墨是考四级的时候下载了这个 app(虽然从来没有真的用过)。面试的时候有个 hr 小姐姐加了我,给我介绍公司,通知我面试。 面试的时候是在企业微信上,boss 和技术一起面我。


  • BOSS


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


: 用过墨墨 app 吗 (笔者很慌,撒谎说用过)


  • 背了多少单词 (更慌了,随口说 100 个左右)

  • 怎么知道有墨墨这个 app 的 (同学介绍)

  • 你简历说你自己心思缜密,但是你简历上的句子的标点符号有问题啊。(emmm)

  • 项目的 UI 问题

  • 技术 : JavaScript 空数组是 true 吗?

  • JavaScript 是单线程吗

  • js 精度问题 0.1+0.2 === 0.3 //false

  • 你觉得英语水平会影响编程吗 (答影响不大)


原谅我只记住了这些,这次面试技术上更偏向于 js 基础知识,问了很多口头判断题,只需要回答 yes or no 就可以了。 如果有想去向清远墨墨这样的小公司实习的,笔者建议多了解这个公司的相关信息,因为很可能接触到 BOSS 的灵魂拷问。清远墨墨公司压力相比于大厂小,公司里养了很多猫,还是个猫咖。如果不是为了面包,笔者是很青睐这种公司的。虽然拿到了 offer,还是婉拒了小姐姐,对方还很礼貌的问我,怎么不来了呢,是不喜欢广东吗? T_T 。

「腾讯 PCG 一面」

这次面试是在电话上进行的,面试官小哥哥说话很清晰,问的问题也很细,总体来说表现还是可以的。


  • 为什么学习前端?

  • 了解 python、go 吗 ? 了解 python

  • node 作为后端有什么优缺点 ? 这里小哥哥告诉我 node 在高并发场景表现和性能存在瓶颈

  • 做过音视频方面的吗 ? 答做过网盘,有媒体文件预览功能

  • 浏览器重拍重绘,怎么减少重拍重绘 ?

  • 异步队列 微任务、宏任务 优先级

  • 跨域方式有哪些? 同源策略 cors、JSONP、postMessage 、代理服务器

  • JSONP 实现原理 ? 利用 script 标签和注册全局函数

  • localstorage、sessionstorage 区别 ?

  • 怎么实现一个水平居中的 alert 窗口 ? 定宽高 margin、calc、不定宽高 transform、flex 布局

  • webpack 打包过程 ?


?

1.初始化 webpack.config.js 最后的配置结果 2.初始化 compiler 对象,注册所有配置的插件,插件监听 webpack 构建生命周期钩子。 调用 run。 3. 根据入口文件,分析模块依赖(深度遍历),treeshicking4.对应的文件使用对应 loader loader 是一个函数 右到左的顺序执行 输入参数是一个字符串,输出参数也是一个字符串 5.得到每个文件结果,包含每个模块以及他们之间的依赖关系,生成 chunk。webpack 将所有的模块打包成一个函数 6.最后生成 bound 文件 是一个自执行函数

?


  • 用过你觉得最好用的 webpack 插件 ? 答模块热替换插件

  • 什么是 SPA 应用,相对于多页的缺点 首屏缓慢、不利于 SEO 爬取

  • CDN 的优势在哪里 有用过吗(答出了优势,但没有用过)

  • 浏览器缓存问题


?

强缓存 Expires 字段(受限制于本地时间) catcel-control 字段 max-age 、 public、 private 、no-store 、no-catch 协商缓存 Last-Modified 服务器发往客户端、f-Modified-Since 客户端发往服务器,携带 Last-Modified 不准确 ,引入 Etag Etag 文件的唯一识别符 通常是计算文件内容的 md5

?


  • 浏览器资源加载优先级 ? 答不了解,能给我讲讲吗,对面讲了下如图片资源,浏览器会优先加载用户可视的内容。

  • 最近在读过什么书? 深入浅出 nodeJS

  • 3:20 时,求时针分针之间的夹角。 这里注意减去时针偏移的 10 度。

  • 笔试 模拟大整数相加、相乘


function add(a, b) {let res = ''let newA = a.split('')let newB = b.split('')let c = 0while (newA.length || newB.length || c) {c += parseInt(newA.pop() || 0) + parseInt(newB.pop() || 0)res = c % 10 + resc = c > 9 ? 1 : 0}return res}function multiply(a, b) {let arr = []let num = 0;for (let i of a) {let temp = numfor (let j of b) {if (!arr[temp]) arr[temp] = 0arr[temp] += (i * j)temp++}num++}for (let i = arr.length-1; i >0; i--) {if (arr[i] > 9) arr[i-1] += parseInt(arr[i]/10)arr[i] = arr[i]%10}return +arr.join('')}复制代码


这次面试感觉还不错,面试官小哥哥给我讲了很多东西,还告诉我他在工作中的实际业务,使用的技术栈,现在的前端发展。对我这样的双非学历也一视同仁,我个人是非常尊敬欣赏这样的面试官的。打 call!

「阿里钉钉」

阿里钉钉是在钉钉上加了群,和群主老哥聊过几句,最后也是这位老哥面的我。上来就是两个笔试题。


1.函数防抖?function throttle(fn,delay) { //节流 let lasttime = 0return function () {let nowtime = new Date().getTime()if(nowtime-lasttime>=delay){fn.call(this)lasttime = nowtime}}}2.爬梯子问题?function jumpFloor(number){let fib = [0,1,2]if(number<3) return fib[number]for(let i = 3;i<=number;i++){fib.push(fib[i-1]+fib[i-2])}


return fib.pop()}复制代码

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
已拿字节、腾讯、墨墨 offer,【面试总结