2020暑假实习-腾讯TEG前端二面
机试部分
一、简答题
1. 常用的浏览器内核:
- webkit
- blink
- gecko
- trident
- …
2. 外边距重叠
外边距重叠是指两个连续的元素,它们各自具有的margin会覆盖对方的margin,造成最终显示在浏览器上的效果是只存在较大的margin(不存在外边距重叠的话则会显示为两者的margin之和)
3. CSS3属性
- opacity
- transform
- display: flex
- border-radius
- display: grid
- transition
- animation
- …
4. JS变量类型
- 基本类型:null、undefined、number、string、boolean、symbol
- 引用类型:object
5. ES6特性
- let/const
- 解构赋值
- 模版字符串
- Promise
- Generator
- Async/Await
- 模块化import/export
- Symbol
- class
- 箭头函数
- Proxy
- Reflect
- Array的扩展,如:Array.from、Array.of、扩展字符串…
6. 性能优化
- 减少HTTP请求方面
- 使用sprite图
- webpack等打包工具
- 网络连接速度优化
- 接入CDN
- 使用HTTP 2.0
- 减少重排/重绘
- 离线处理样式
- 将样式放到class里进行集中处理
- 分离样式的读写操作
- 尽可能避免使用table布局
- 资源压缩
- 使用事件代理减少内存开销
7. GET和POST的区别
-
get是幂等操作,每次使用get请求得到的结果都是一样的,即它的操作是没有副作用的,因此get请求可以存储为书签,保存在历史记录里;
post请求是非幂等的,每次使用post请求得到的结果都是不一样的,即它的操作使用副作用的,因此不能存储为书签、保存在历史记录里。
-
get将请求参数以query字符串的方式附着在url之后,是可见的,安全性差,参数长度有限制(实际为浏览器对url长度的限制);
post的请求参数保存在请求实体里,不可见,安全性略好一点点,长度大小没有限制。
-
get只能使用ASCII编码,而post没有限制。
-
get只能传递字符串参数,post还能传递二进制文件等其他类型。
-
个人认为get和post在实质上没有区别,它们本质都是tcp连接,区分它们作用的是当前的规范和后台响应请求的具体实现方式。
8. http返回码
- 1XX系列 表示信息提示,继续处理请求
- 100 Continue 示意客户端继续发送请求
- 101 Switching Protocol 示意切换传输协议,多为对Upgrade请求头的回应
- 2XX系列 表明正确处理请求
- 200 Success 表明请求已处理完毕
- 204 No Content 表明请求已处理完毕,但没有返回请求实体
- 206 Partial Content 表明请求已处理完毕,返回要求范围内的资源
- 3XX系列 表示重定向
- 301 永久性重定向 表明请求的资源已经永久性的移动到另一个位置
- 302 Found 暂时性重定向 表明请求的资源暂时被移动到另一个位置
- 303 暂时性重定向 表明请求的资源暂时被移动到另一个位置,且应该使用get重新发送请求
- 304 Not Modified 对条件请求的回应,多用来表明请求的资源没有发生变动
- 4XX系列 表示请求发生错误,且错误原因在客户端
- 400 Bad Request 表明请求有语法错误
- 401 Unauthorized 表明请求需要进行身份认证
- 403 Forbidden 禁止访问资源,可能是因为没有通过身份验证
- 404 Not Found 表明请求的资源不存在
- 5XX系列 表示请求发生错误,且错误原因在服务器端
- 501 Internal Error 表明服务器在处理请求时内部发生错误
- 503 Service Unavailable 表明服务器暂时不可用
- 504 Gateway Timeout 表明服务器从上游服务器请求资源超时
二、编程题
1. CSS实现箭头三角形
<div class="arrow"></div>
.arrow {
border: 10px solid;
border-color: transparent transparent transparent black;
}
2. CSS实现单行文本溢出显示省略号
&