接着奏乐,接着舞~
—— 字节跳动 实习 ——
一面(教育部门) 2020.6.30
- 自我介绍
- 项目难点
- uni-app的底层实现原理(如何实现跨平台的)
- uni-app和flutter的区别
- 提到的 (vuex里的) actions 是做什么的
- 为什么要用key
- key用index和id的区别
- 原型链的了解
- typeof判断数组结果是什么
- instanceOf呢
- this指向的一些题打印结果
- bind call apply
- 异步处理方式
- try catch能抛出promise的异常吗
- 和.then .catch有什么不同
- 事件循环原理
- 数组的一些操作方法
- 编程:
- 最长不重复子串的长度
- 每隔1s打印0~n(问原因和原理)
二面 2020.6.30
- 自我介绍
- Axios的原理
- 原生ajax对XHR怎么做处理的
- 对Fetch有了解吗
- Fetch第一次请求之后返回什么(204)
- Options请求有请求体吗
- Http请求有哪些参数
- Http有哪些请求方式
- Put和Post的区别
- 提交表单content-type是什么类型
- 提交表单还有哪些类型
- 哪种更好更通用
- 上传文件content-type是什么类型
- 移动端自适应适配布局的实现方法
- new期间发生了什么
- vue组件通信方式
- 兄弟组件的通信方式
- vue3.0的新特性
- 说一下proxy的原理
- 说一下vue双向绑定的实现
- 编程:
- 检查回文字符串(英文大小不敏感)(忽略除英文以外的字符)
- 抓石子问题(可能出现的情况)(可能性总数)(判断必胜情况)
三面 2020.7.3
- 自我介绍
- 项目难点
- 项目中vuex的难点在哪?
- 进程和线程的区别
- 进程间怎么通信的
- 什么是死锁
- 介绍304状态码
- Http协议是哪一层的
- 讲一下TCP传输过程
- 为什么断开连接有四次
- 讲一下Options请求是干嘛的
- 同源策略
- 跨域的解决方案
- JSONP的原理
- CORS中Options的作用
- 给你一些url,判断是不是跨域
- webpack中的loader
- 编程:
- 给定任一数组和数字n
求加和大于等于n的最短连续子数组的长度
—— 阿里巴巴 校招 ——
一面(淘系)2020.7.6
- 自我介绍
- 项目介绍
- 开发一个小程序的流程
- 小程序服务器域名如何配置
- taro和uni-app的区别
- react生命周期
- vue的传值方式
- 什么是原型链
- 什么是闭包 举个例子
- 虚拟dom作用
- 讲一下diff算法
- 什么情况下虚拟dom反而不适用
- 说一下常见的web安全问题
- 讲一下XSS和CSRF是怎么攻击的
- 讲一下对Cookie的了解
-
// 打印结果 Function.prototype.a = 1; Object.prototype.b = 2; function A() {} var a = new A(); console.log(A.a, A.b); console.log(a.a, a.b); console.log(Function.b, Object.a);
- 编程:
- 编写一个函数来查找字符串数组中的最长公共前缀。(如果不存在公共前缀,返回空字符串 "")
二面 2020.7.7
- 自我介绍
- 对项目的详细提问(项目难点、登录权限的控制的实现、后台数据的存放等等)
- 小程序开发和其它前端开发的区别
- 响应式布局实现
- 顶部固定,下面撑满的布局怎么实现
- 如何判断是移动端还是PC端
- user-agent是什么
- session的了解
- session是服务器端机制还是客户端
- flex的一些关键字
- 动画怎么实现
- canvas怎么控制动画
- requestAnimationFrame和定时器的区别
- JS正则表达式提取一段url中的电话号码
- MVVM和MVC的区别
- MVC的框架有哪些
- 对Spring有了解吗
- 了解IOP吗
- koa洋葱圈模型
- 状态管理容器有哪些
- vuex和redux的区别
- 异步处理方案
- 批量处理promise对象,拿到全部返回结果后一次性处理,怎么解决
- try catch能不能捕获promise抛出的异常
- 怎么去捕获抛出的异常
- 跨域产生的原因
- JSONP原理
- JSONP如何处理服务器端传回来的数据
- git的一些常用指令
- 如何解决git冲突
- 什么时候开始接触计算机
- 学习前端多久了
- 为什么选择前端
- 了解了一些比赛的项目和奖项
一面(淘菜菜) 2021.6.8
- 自我介绍
- 问项目(挺多,省略)
- 图片懒加载,没展示的时候使用占位符代替,如何让占位符根据图片尺寸大小自适应
- JS基本数据类型
- 使用哪些数据类型时候需要注意
- 如何判断null、undefined、空值
- 如何判断数组
- 如何判断所有类型
- instanceOf原理
- 原型链
- ES6用过哪些
- ES5中知道哪些继承方式
- 如何实现原型链继承
- 闭包
- 哪些场景下用到了闭包
- 防抖和节流,如何使用的闭包
- 闭包和自执行函数的关系
- 什么是事件冒泡
- 如何阻止冒泡
- 什么是移动端的事件穿透
- 如何解决事件穿透
- 用过哪些HTTP请求库
- 如何解决跨域
- CORS是怎么去做的
- 什么时候是非简单请求
- HTTP状态码
- 204状态码代表什么意思
- 知道哪些本地存储方式
- localstorage和sessionstorage的区别
- 如何实现将一个复杂的对象结构数据扁平化为数组结构
二面 2021.6.9
- 自我介绍
- 为什么选前端、学了多久、如何学的
- 看过哪些源码、为什么会去看
- sort方法的底层实现
- vue2.x、3.x的双向绑定底层实现
- taro、uni-app的跨端底层实现
- CSS高清模式了解吗
- 函数声明和变量声明的区别是什么
- 函数声明和函数表达式的区别是什么
- 箭头函数和普通函数的区别
- 在一个类的内部,用this声明一个方法或者属性 和 在prototype上声明一个 new 创建的 方法或者属性,两者有什么区别
- 用这个类去实例化两个对象,在上面的两种情况中,哪种情况下 改变其中一个对象会影响另一个对象
- 什么是闭包
- 什么是内存泄漏
- 垃圾回收机制
- 如何解决跨域
- 上面说的这些方法的区别是什么,分别是怎样的适用场景
- http的过程
- https的过程
- 问实习、项目、比赛(挺多,省略)
三面 2021.6.11
- 问实习、项目
- taro、uni-app跨平台实现原理
- 为什么会去做Flutter,你觉得这个属于前端方向吗?
- 为什么选前端,不做客户端、服务端(有项目经验)
- 封装一个组件需要考虑哪些因素
- 什么是低代码,低代码存在的意义
- 如果要你去做一个C端应用,你觉得需要关注哪些东西
- 需要关注的性能数据指标有哪些
- http2.0的新特性
- http2.0能被抓包到吗
- 在小程序中,用户去分享一条消息,每个用户有唯一标识,但很有可能会被别人窃取,那我们如何去避免呢
- 在微信中,用户发送一条消息,消息包含一个域名链接(指向其它应用),但是会被微信屏蔽掉,如何实现快速切换域名策略来解决这个问题
- TopK的思路
- 你觉得你比其他人的优势体现在哪里
—— 百度 校招 ——
一面(智能小程序) 2020.9.26
- 自我介绍
- 项目难点
- px em rem区别
- echarts和g2的区别
- 闭包的使用场景
- 闭包的优缺点
- 异步解决方案
- var let const 的区别
-
/* ** 以下为两块代码,分别执行的打印结果 */ for(let i=0; i<3; i++) { setTimeout(() => { console.log(i) }, 1000) } for(var i=0; i<3; i++) { setTimeout(() => { console.log(i) }, 1000) }
- 深拷贝和浅拷贝的区别
- 深拷贝的实现(面试官希望听到的是JSON序列化和反序列化的方法)
- 了解vue哪些生态
- vue的双向数据绑定原理
- 如何进行数据劫持的
- object.defineProperty如何修改对象或者数组
- vue生命周期
- vuex解决了什么问题
- express和koa的区别
- CommonJS和ES module的区别
- amd和cmd的区别
- url到页面加载的过程,每个阶段发生了什么
- 编程:
- 手写 快排
二面 2020.9.26
- 项目经历
- 实习经历
- 学习经历
- 了解百度小程序吗
- css选择器有哪些
- 选择器优先级
- 选择器权重怎么计算
- display有哪些属性,分别代表什么意思
- position有哪些属性,分别相对什么定位
- typeof实现原理
- instanceof实现原理
- typeof能判断哪些类型
- typeof null 打印什么 为啥
- typeof 数组 打印什么
- 如何判断数组和对象
- 冒泡、捕获的区别
- 如何阻止冒泡
- setTimeout和setTimeInterval的区别
- 如何确保时间不被篡改
- node做过什么
- node的 EventEmitter做了些什么
- 了解哪些JS继承方式
- 编程:
- 实现 两边固定中间自适应布局
- 多叉树深度搜索遍历
- 寻找数组中第k大和第中间大的值(要求手撕冒泡)
- 秒杀系统倒计时控制按钮可点击
- call和apply实现的js继承(lz太菜了不会这个,改成了写个原型链继承)
三面 2020.9.26
- 自我介绍
- 实习介绍
- 为啥学前端
- 如何学习的前端
- 看过哪些书籍
- 如何看待前端技术迭代快这件事
- 职业规划
- 对架构有什么了解
- 学习方向选择广度还是深度
- 实习学到的东西
- Seo优化方法
- 实习中有没有提过意见被采纳
- 学校里最遗憾的事情
- 学校里最难忘的事情
- 参加过哪些比赛
- 哪场比赛让你印象深刻,最后获得了什么结果
- 你觉得你的优势是什么
- 你有哪些不足的
—— 腾讯 校招 ——
一面(CSIG)2020.10.26
- 技术熟练度介绍
- 行内元素和块级元素区别
- position属性区别
- 绝对定位相对以content、border、padding哪一个为源点
- 用过哪些布局
- flex布局属性
- flex实现垂直居中
- 父元素300px 子元素A flex: 1 子元素B flex: 2 问子元素宽度
- 如果父元素宽度只有200px 子元素A flex-basis 100px 子元素B flex-basis 200px 问宽度
- css选择器优先级
- vue中样式穿透原理 scoped原理
- 实现一个不知道宽高的正方形
- 盒模型有几种
- 回流和重绘,什么操作会引起回流,什么操作会引起重绘
- 加载很多个只有几k的小图片会出现什么问题,如何解决
- TS和JS区别,为什么要用TS
- js原型链
- instanceOf原理 具体怎么实现的
- js异步和同步区别
- 讲一下事件委托
- 事件冒泡的每个阶段
- vuex的模块有哪些
- actions和mutations区别
- vuex异步用哪一个模块
- vue-router路由两种模式,以及它们的区别,什么时候用哪个
- 使用history模式要注意些什么
- 如何配置对应路由处理
- 浏览器解析html过程
- 浏览器缓存
- 协商缓存有哪些字段
- get、post请求区别
- 为什么post要发送两个数据包
- 网络的七层协议
- udp、tcp在哪一层
- DNS解析过程
- tcp和udp区别
- 为什么tcp比udp快
- 数据库里的事务
- 外连接和内连接区别
- 死锁是什么
- 怎么预防死锁
- taro底层实现原理
- 项目介绍
- 项目难点
- 为什么换成uni-app
- 编程:
- 找出所有最长连续重复字符子串
- 计算m到n区间内能被k整除的值的个数
二面 2020.10.31
- 自我介绍
- 对数据结构了解
- css3
- 弹性盒子布局
- flex 实现 垂直水平居中
- rem 和 px 区别
- js 和 C语言区别
- 对面向对象的了解 以及 其特性
- 闭包
- 原型链
- 异步 和 同步特性
- 宏任务 和 微任务
- 数组的方法
- 讲一下深拷贝 和 浅拷贝
- ajax 原理
- ajax 如何实现异步请求的
- react 和 vue 区别
- vue 双向绑定原理
- 为什么object.defineproperty不能监听数组和对象
- 如何让它能够监听呢
- v-if实现原理
- vuex工作原理
- vuex解决了什么问题
- vuex如何改变数据的
- webpack用来做什么 为什么要用 不用不行吗
- cookie 和 session
- get 和 post 区别
- 为什么会有跨域
- cors原理
- git rebase 了解吗
- uni-app 和 taro 区别
- uni如何实现跨平台
- flutter 如何实现跨端
- node做过什么
- koa框架说一下
- 编程
- 手写 dfs
- 实现 左侧菜单栏
- 实现 深拷贝
三面(2个半小时,很多不记得了....) 2020.11.1
- 自我介绍
- 实习介绍
- .....(一些常见人生规划问题)
- 小图片优化问题(说出尽量多的解决方案)
- iconfont如何配置
- 知道哪些前端优化,举出几个场景
- 实现正方形展示小图片
- 图片如何自适应
- 窗口垂直水平居中(说出尽量多的解决方案)
- px和rem区别
- rem原理
- viewport是什么,属性有哪些
- 回流和重绘是什么,如何产生的
- display: none 和 visibility: hidden 区别
-
var a = [1,2,3] var b = a b.push(4) console.log(a)
- 如何实现数组复制呢(ES5、ES6的解决方案)
- 浅拷贝 和 深拷贝
- 原型链
- 链顶端是什么
-
"aa.".rightTrim() // 实现这个函数 // 面试官的意思就是 在原型链上添加一个这个方法
- js 如何自定义事件
- 如何删除事件,删除事件放在哪
- js 如何自定义属性
- 如何实现 .once
- js如何获取cookie
- 如何删除cookie
- cookie哪些属性
- ajax原理
- ajax如何处理原生xhr对象
- vue双向数据绑定(vue2.0、vue3.0)
- obeject.defineProperty是如何确定给指定值添加监听的
- 组件通信方式
- vuex工作原理
- webpack工作原理
- node如何搭建一个服务
- node用过什么模块
- 浏览器渲染html机制
- 如何构建的dom树
- http缓存(强缓存 / 协商缓存)
- expires、cache-control、etag、last-modified 分别讲一下
- http报文讲一下结构
- 请求行有哪些东西,顺序是怎样的
- 能通过http报文知道哪些东西
- post和get区别
- 什么时候用get呢
- https原理
- http1.0 和 http2.0区别
- 多路复用是怎样的
- http过程
- tcp传输过程
- dns解析过程
- 同源策略
- 为什么会有跨域
- jsonp原理
- 怎么转成JSON格式
- cors讲一下如何解决跨域的,需要设置哪些参数
- 什么情况下是非简单请求
- 非简单请求是怎样的一个过程
- base64原理
- base64缺点
- 对数据库的了解
- web攻击方式有哪些(xss、csrf、sql注入、ddos等等?)
- XSS讲解
- 如果是你,如何进行XSS攻击(带场景)
- 如何防范XSS攻击
- 线程和进程区别
- 什么是死锁
- 如何解决死锁
- git 如何临时保存 然后切换分支不会丢失
-
let url = "https://www.xxx.com?url=https://www.xxx.com/a.jpg" // 如何获取到图片路径
- 如何解决死锁
- 编程
- 从-10 到 10,找出所有满足 三个数之和等于10的组合(三个数不重复、组合不重复), 例如 { -1, 1, 10 }
- 三个数不重复: 例如 { 1, 1, 0 }, { 1, 1, 1 } 算重复。
- 组合不重复:例如 { 1, 2, 3 }, { 3, 2, 1 }, { 1, 3, 2 }.... 算重复。
四面 2020.11.6
- 自我介绍
- 技术栈
- vue和react区别
- vue双向绑定原理,具体如何实现的
- 浏览器占用cpu或内存过高是什么原因,怎么追踪原因
- 如何在移动设备真机上进行调试
- 移动设备cpu 和 pc端cpu 的区别(拉跨)
- 如何实现一个数据很多的长列表(虚拟列表)
- 如何保证展示可视区域的数据
- 如果用户恶意滚动(不停的滑动)会出现什么问题,如何解决
- 防抖和节流怎么做
- 怎么获取当前滚动到的区域高度、位置
- sessionStorage 和 localStorage 区别
—— 字节跳动 校招 ——
一面(商业变现)2020.10.28
- 自我介绍
- 移动端1px问题
- vue 3.0 做了哪些变化
- composition API详细说一下
- proxy代理做了些什么
- proxy实现上 做改动
- 对promise熟悉吗
- 说一下promise.all
- 用过装饰器吗(只用过ts库里的,没用过ES7的)
- 函数能用装饰器吗
- webpack和babel了解吗
- babel如何将ES6转ES5的
- webpack的 loader和plugins
- webpack 5.0了解吗
- node熟悉吗 平时用什么框架
- 什么是死锁
- 如何解决死锁
- http是哪一层
- tcp为什么挥手要四次
- 304状态码
- 缓存机制有哪些
- 协商缓存有哪些字段
- etag有什么其它字段要求
- 为什么浏览器不能跨域
- 为什么不允许跨域
- 如何防止cookie欺骗
- taro和Uni-app如何实现跨端的
- Hbuilder内核
- 编程
- 实现proxy代理
- 实现promise.all
- 爬楼梯问题(斐波拉契)
- Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.
Example 1:Input: [[0,30],[5,10],[15,20]]Output: false
Example 2:Input: [[7,10],[2,4]]Output: true - 上个问题的演变, 改成输出最少需要多少间会议室。
二面(记错面试日期了,迟到了半个小时...,GG) 2020.11.3
- 实习介绍
-
// 求打印结果 以及 原因 function outer() { var arr = [] for(var i=0; i<2; i++) { arr[i] = function inter() { return i } } return arr } var res = new outer() console.log(res[0]()) console.log(res[1]())
- 两列布局实现方式(Grid?)
- 浏览器事件模型 以及 每个阶段
- 事件委托
- http1.0 1.1 2.0 3.0特性
- http2.0 头部压缩 如何确保两边的header索引表一致性
- https过程
- 为什么先非对称加密再对称加密
- 如何验证数字证书的
- DNS过程
- DNS是查找什么
- DNS缓存
- 跨域CORS请求原理
- 什么时候是非简单请求
- 非简单请求是怎样的
- 编程
- 实现 观察者模式(发布 / 订阅)模式
- 反转链表
- 闭包实现函数柯里化,例如 sum(1)(2)() => 3
“ 招你来是造火箭的,但你得先会拧螺丝。”
全部评论
(7) 回帖