字节跳动-商业变现-广告
一面
代码题
- 链表的插入,删除,长度计算
- 求解最长公共子串
js
let list = ['acccs', 'acaaa', 'ac']
// ac
let list = ['acccs', 'acaaa', 'ac']
// ac
js
// 要求:必须等全部都resolved或这reject才返回
// 有一个reject就走catch
// 返回数组:(包括每一个resolved/reject的内容)
function waitAll(promises){
}
// 要求:必须等全部都resolved或这reject才返回
// 有一个reject就走catch
// 返回数组:(包括每一个resolved/reject的内容)
function waitAll(promises){
}
- 实现bind
- 深拷贝的有哪些实现方式,递归实现一个深拷贝
- 下面代码哪些if是真
js
if([])
if({})
if([]==false)
if({}==false)
if([])
if({})
if([]==false)
if({}==false)
计网
- TCP、UDP的区别
- OSI七层模型
- 物理层传输的单位是什么
- http1与http2的区别
- https与http的区别
- ajax与http的关系
- 在浏览器中输入url发出的请求与ajax的区别
- http包是如何到达服务器的
- TLS工作原理
- 客户端如何知道服务端下发的CA证书是没有被劫持篡改过的
- 客户端如何验证CA证书是合法的
- 我没有去主动安装这些证书,浏览器是怎么验证的
- GET与POST区别
- URL长度限制是多长
- 常用请求方法
- GET是否可以在body中放内容
- http请求body是否有大小限制
- 什么情况下请求方法是options
操作系统
- 进程与线程的区别
- 进程怎么并行
浏览器
js/css
- 原始值类型有哪些
- 如何判断变量类型
- 如何判断数组
- null是对象吗,为什么
- forof与forin区别
- forof 与 forin在遍历顺序上是否有区别
- call,bind,apply区别
- 伪类与伪元素的区别,举例用过的伪类与伪元素,以及它们的使用场景
- css选择器用过哪些,都有什么作用
- 如何获取一个dom对象,这几种方式哪个效率最高,为什么
- 什么是事件委托?优点是什么?
- 如何获取指定dom的指定属性
- 如何获取指定dom的指定样式
- 如何获取指定dom的生效样式
- 简述一下CSS盒模型,可以手动去改变吗
vue
- slot的常见用法有哪些
- 什么是slot,他有什么作用
- 为什么会有slot这个玩意儿
其它
- TS将属相分为哪两大类
- 你认为TS有什么优点
- 如何在项目中引入TS,成本大吗
- js项目迁移TS成本大吗
二面
代码
- 实现一个深拷贝考虑对象原有的特性
js
let a = {age:18}
let old = {p1:a,p2:a,p3:{p:a}}
function deepclone(){}
let b = deepclone(old)
// 这里原有的特性指拷贝出来的b
// 他的p1,p2,p3.p指向的是同一个对象
// 即效果
b.p1.age=10
console.log(b.p2.age) // 10
let a = {age:18}
let old = {p1:a,p2:a,p3:{p:a}}
function deepclone(){}
let b = deepclone(old)
// 这里原有的特性指拷贝出来的b
// 他的p1,p2,p3.p指向的是同一个对象
// 即效果
b.p1.age=10
console.log(b.p2.age) // 10
- 代码阅读
js
function a(){
this.b = 3
}
var b = 5
var c = new a()
a.prototype.b = 4
console.log(c.b) // ?
function a(){
this.b = 3
}
var b = 5
var c = new a()
a.prototype.b = 4
console.log(c.b) // ?
- 代码阅读
js
for(var i = 0;i<2;i++){
setTimeout(()=>{
for(var j = 0;j<3;j++){
setTimeout(()=>{
console.log(i*j)
},0)
}
},0)
}
// 输出结果是多少?为什么
// var 变为 let 结果又是多少?为什么
for(var i = 0;i<2;i++){
setTimeout(()=>{
for(var j = 0;j<3;j++){
setTimeout(()=>{
console.log(i*j)
},0)
}
},0)
}
// 输出结果是多少?为什么
// var 变为 let 结果又是多少?为什么
- 实现一个onclik事件,每点击一次造成一次内存泄露
js/css
- 什么是闭包?它的使用场景有哪些?举个例子(代码)
- 内存泄漏指什么?为什么会出现?举个内存泄漏的例子(代码)
- js的垃圾回收机制是什么?如何工作的
- node中的js与浏览器中的js区别
- 用node.js写服务端与用js写web 你觉得有哪些差异
- 什么是媒体查询?使用场景
- 混合开发APP与H5样式层面遇到过哪些差异之处说说看
其它
- webpack的loader与plugin的区别是什么?为什么会有plugin,只用loader不行吗
- 根据自己的理解,描述一下webpack是什么,(向一个不知道什么是webpack的人陈述)
三面
cookie
背景:页面在a.com/index.html下,加载了一个b.com/js/demo.js脚本
- 获取脚本的请求会附带a.com下的cookie吗
- 这个脚本如果执行document.cookie获取到的cookie是哪个域名下
- 如果在脚本中向b.com发送ajax请求会携带a.com下的cookie吗,为什么
- 将a.com下的cookie发送到b.com下有哪些方案
- 如何防止外部脚本嵌入
- 如果需要在页面中嵌入外部的脚本,如何防止其获取到cookie
- 说一下samesite属性的作用,他有哪些值
- HttpOnly的作用
- 让跨域请求携带当前域下的cookie有哪几种方式
- 解决跨域的手段有哪些
- 说一下jsonp的原理,如何配置
- CROS如何配置,客户端还是服务端做配置
http
- http1与http2的区别
- http2有哪些新特性
- 多路复用如何工作的
- 知道帧id吗?他有什么作用
- 如果一个请求服务器要处理很久才能响应,有哪些办法在服务端处理完后,客户端能第一时间接收到
- 知道pwa吗
- 请求超时时间可以设置为24h吗
文件上传
- 如何实现分片上传
- 如何实现断点续传
- 如何计算文件的md5(md5的算法)
- 服务端如何处理上传完的分片
场景题
实现:一个select下拉框选择不同的选项,在其下方展示不同的内容(单个组件,组件嵌套组件等)
- 可能有很多选项,每个选项对应的渲染内容又不一致
- 选项与展示内容的关联关系,很可能发生变动,如何避免硬编码