快手前端视频一、二面
刚开始以为只有一面,谁知道一面面完了让等一下二面
一面
- CSS3 选择器有哪些(不太了解)
- 那你了解的选择器有哪些(伪类伪元素,兄弟,子元素,后代)怎么写(h1 h2,h1>h2)
- CSS 两栏布局(float table flex)两列等高布局
- 浏览器渲染的过程(html 构建 dom,css 构建 cssom,这两个构建 render tree,渲染)
- 怎么判断一个文件是 html(content-type? 有哪些值 json JavaScript,其他的不太了解)
- http 缓存(强缓存和协商缓存,中间有些自己理解的问题,面试官指出来了)
- 301 和 302 状态码
- js 基本数据类型
- typeof 的值有哪些
- 还有哪些判断类型的 api (instanceof Array.isArray constructor Object.prototype.toString.call)
- bfc 的特性(说了块和靠边)
// 科学计数法,将 24315436 转换成 24,315,436 // 之前看过这个的正则就用正则写了 function change(num){ var str = num + ""; str.replace(/\B(?=((\d{3})+)$)/g,','); // str.replace(/\B(?=(\d{3}+)$)/g,','); 当时是这么写的,少加了个括号,没改完他就说思路是对的 return str; }
- ?= 的作用(正向预检)
// 写出一个数组展开函数, 如输入:[1,[2,[3,4,2],2],5,[6]], 则输出:[1,2,3,4,2,2,5,6] // 因为和深度无关,所以说最简单可以这样 function flatten(arr){ var res = arr.join().split(','); res = res.map( ele => +ele) return res; } // 还有吗,递归,写一下 function flatten(arr){ var array = []; arr.forEach(ele => { if(Array.isArray(ele)){ array.push(...flatten(ele)); } else { array.push(ele); } }) return array; }
- let var 区别(var 存在变量提升,let 块级作用域,暂时性死区,let 可以重复定义吗,不可以)
- 事件模型及事件委托
- 写一下深拷贝(这个就不写了,网上有)还有哪些方式(JSON 序列化)还有吗(我知道的就这两种,还有其他的吗)你的答案是对的,但是想看看你知识的广度
- 软件工程方面看过哪些书(高级软件工程,人月神话看过吗,不清楚)
- 设计模式(单例和装饰者讲一下,单例模式用处,AOP 知道吗,不太了解,好像是 before 函数和 after 函数)
- 排序算法时间最优(nlogn 的吧,哪些?快排,堆排,归并)
- 快排最坏 n2,什么情况下,基本有序
一面基本就这些,面完了让等一下二面
二面
二面好多东西记不太清了,写一下自己还记得的吧
// 实现一个函数 findLastIndex(), 返回指定数在“有序”数组中最后一次出现的位置findLastIndex([1,2,3,3,3,4,5], 3), 返回 4 // 刚开始写的有点问题,没有判断全部相等的情况,后面提醒写上了,写的比较粗糙,如果有更好的可以分享一下。 function findLastIndex(arr,num){ var mid,left,right,pos = -1; mid = Math.floor(arr.length/2); left = 0; right = arr.length - 1; if(arr[left] != arr[right]){ while(Math.abs(left - right)!= 1){ if(arr[mid] === num){ pos = mid; left = mid; mid = Math.floor((left + right)/2); }else if(arr[mid] > num){ right = mid; mid = Math.floor((right + left)/2); }else if( arr[mid] < num){ left = mid; mid = Math.floor((left + right)/2); } } }else{ pos = arr.length - 1; } return pos; } // 请实现一个函数,功能为合并两个升序数组为一个升序数组 // 这道题网上有,自己没答好,最后没写对就没写了
- instanceof 实现原理
- 其他还有哪些方式判断,跟一面差不多
- 工程化的东西有用过吗(自己有学过,然后让讲一下过程,讲的不好,可以说很差)
- 模块化(ES6 Module AMD CommonJS 区别)import 和 require 区别(一个值的拷贝,一个值的引用,还有吗,不清楚)
- 事件绑定哪些(onclick addeventlistener 还有 html 页面里面 onclick)dom0 级和 dom2 级事件有哪些(一开始理解错了,后面提醒是其实就是 onclick 和 addeventlistener 的区别)什么情况下用到事件委托
- css 移动端适配有哪些(viewport,media query,rem)
- 移动端有哪些单位(px,rem)还有吗(em,好像不适合移动端,而且他是叠加计算的)
- 那 em 和 rem 是什么,rem 就是 :root { font-size: 16px },em 根据父元素的 font-size。默认值多少 16px;
二面明明好多没答好的,结果记不太清了,就记得这些了,问了下自己表现不好的地方,实战经验太少。唉,估计又挂了,面的不少,基本没有过的,难受
#快手##面经##前端工程师##内推##秋招#