最近几天一直在找工作,今天把面试遇到的问题一个一个的整理下来。
基础问题(css,html,js)
- 算法问题:使用一个for循环,找出一个数组里面第二大的值。
当时没有想出来,一离开立马就想出来了,好丢人啊。
var arr = [8, 6, 8888, 8]
function func(arr) {
if (arr.length < 2) return arr[0];
var max = arr[0],
smax = arr[1];
for (var i = 0; i < arr.length; i++) {
if (max < arr[i]) {
smax = max
max = arr[i]
} else if (arr[i] < max && arr[i] > smax) {
smax = arr[i]
}
}
return smax
}
var a = func(arr)
- 怎么样理解盒模型
官方解释 - 4种定位的区别
static:这个是元素的默认定位方式,元素出现在正常的文档流中,会占用页面空间。不能使用top,bottom,left,right和z-index。
fixed:元素框的表现类似于absolute,但是fixed是相对于视窗本身,也就是浏览器窗口而定位的。所以,采用该定位的元素在页面下拉的时候,其位置并不会发生变化。
relative:相对定位方式,相对于其父级元素(无论父级元素此时为何种定位方式)进行定位,准确地说是相对于其父级元素所剩余的未被占用的空间进行定位(在父元素由多个相对定位的子元素时可以看出),且会占用该元素在文档中初始的页面空间,即在使用top,bottom,left,right进行移动位置之后依旧不会改变其所占用空间的位置。可以使用z-index进行在z轴方向上的移动。
absolute:绝对定位方式,脱离文档流,不会占用页面空间。以最近的不是static定位的父级元素作为参考进行定位,如果其所有的父级元素都是static定位,那么此元素最终则是以当前窗口作为参考进行定位。可以使用top,bottom,left,right进行位置移动,亦可使用z-index在z轴上面进行移动。当元素为此定位时,如果该元素为内联元素,则会变为块级元素,即可以直接设置其宽和高的值;如果该元素为块级元素,则其宽度会由初始的100%变为auto。
注意:当元素设置为绝对定位时,在没有指定top,bottom,left,right的值时,他们的值并不是0,这几个值是有默认值的,默认值就是该元素设置为绝对定位前所处的正常文档流中的位置。(可能我没有描述的很清楚,建议自己写个示例看看效果)
- es6中的箭头函数的this指向的什么,原理是什么。
框架问题
面试总会遇到的,因为自己个人的原因所以面试的是vue和react两种框架。
Vue
- vue的生命周期
- vue的路由是如何实现的。
- vuex
- 组件之间是如何传递数据的。
- 如何封装一个组件。(需要特别详细的说出逻辑,代码,过程。)
React
- react的生命周期
- react的路由的如何实现的。
- redux运行原理解释一下。
- dva解释一下。
- 组件之间是如何传递数据的。
- 子组件如何向父组件传递数据。
- 父组件如何向子组件传递数据如何立即获取到子组件。
- 如何封装一个组件。(需要特别详细的说出逻辑,代码,过程。)
构建工具 webpack的使用和理解。
- 手写一个基础的搭建。
- webpack的原理。
发散问题
- 看过那些技术书。
- 自己的职业规划。
- 最近在学什么课程。