2023年2月8日
By: Chase
自己爱问的一些面试题总结
JS部分
- 如何判断array
array.isArray([]) // true
[] instanceof Array // true
- typeof
typeof(null / undefined / [] / {}) // obj / undefined / obj / obj
&& || ?? !
等操作符相关
"123" || 1 // "123"
0 && 1 // 1
0 || 1 // 1
!0 // true
!"" // true
undefined ?? 0 // 比较新的es标准
附带可考察 obj.?key
- 浅拷贝, 深拷贝
- 引用指向的理解
const obj = { val: 1 } const newObj = obj newObj.val = 2 console.log(obj.val) // 2
- 如何避免1的情况
1. 解构{...} 2. object.assign() 3. JSON.parse(JSON.stringify())
- 闭包/ let不同于 var的升项理解
for (var i = 1; i <= 5; i += 1) {
setTimeout(() => {
console.log(i)
}, i * 1000)
}
- this 指向, vue项目里调用请求封装的回调 例子之后补一下
CSS
- css 如何实现左侧固定 200px,右侧自适应的布局
- flex布局的, 考察
flex-shrink
,flex-grow
, flex对width的影响
- flex布局的, 考察
.container {
display: flex;
}
.left {
width: 200px; // or flex-basis: 200px;
border: 1px solid #000;
flex-shrink: 0;
}
.body {
border: 1px solid red;
flex-grow: 1;
}
- 传统inline-block布局, 考察
calc
使用, 和display
,
.container {
width: 100%;
}
.left {
display: inline-block;
width: 200px;
}
.body {
display: inline-block;
width: calc(100% - 200px);
}
- 接着2追问, 如果left加上border会怎么样, 如何处理, 考察
盒子模型
,box-sizing
.container {
width: 100%;
}
.left {
display: inline-block;
border: 1px solid #000;
width: 200px;
}
.body {
display: inline-block;
width: calc(100% - 200px - 2px); // or .left box-sizing: border-box;
}
说说css常用的隐藏方式
- display: none;
- visibility: hidden;
- opacity: 0;
- 2 和 1 的区别: 元素占位;
- vue框架的话, 可在此追问v-if和v-show的区别; v-show => display实现
对
animation
的了解常用的响应式布局手段
- @media
- rem ()
- vw vh
对
position
的了解, 或者直接问6- static: 默认值,无定位,top、right、bottom、left 不起任何作用relative: 相对定位
- relative: 相对定位
- absolute: 绝对定位,脱离文档流
- fixed: 脱离文档流,上下左右以浏览器视口为参照系
- sticky: relative 与 fixed 的结合体
- absolute追问, 或者直接问这个, 考察
absolute
定位的理解程度:- 以下样式渲染出来的效果
container-b
加position: relative?container
加position: relative?
html内为 div.container 包裹 div.container-b 包裹 div.child
.container {
margin: 20px;
padding: 20px;
border: 1px solid red;
}
.container-b {
padding: 20px;
border: 1px solid blue;
}
.child {
position: absolute;
left: 0;
}
浏览器API
- 图片懒加载原生实现
- 考察
onScroll
事件监听,clientHeight
,scrollTop
; - 考察html内
data-*
属性应用; - 追问onScroll频繁触发, 如何节流处理;
- 考察
- e.currentTarget e.target区别
- DOM如何阻止事件默认行为
- 前端如何实现文件上传, 如何限制上传文件大小, 名称等
- 前端跨域解决
项目管理
- 代码分支管理
merge
,push
,pull
,rebase
- 线上bug处理
- 打包, 发版
其他
- 优化经验
- 技术博客
- 印象比较深刻的技术调研与实现