快手前端视频一、二面

刚开始以为只有一面,谁知道一面面完了让等一下二面

一面

  • 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;

二面明明好多没答好的,结果记不太清了,就记得这些了,问了下自己表现不好的地方,实战经验太少。唉,估计又挂了,面的不少,基本没有过的,难受

#快手##面经##前端工程师##内推##秋招#
全部评论
我一面都没过…你已经很棒了
点赞 回复 分享
发布于 2018-09-01 18:12
一面的时候直接告诉你二面了么
点赞 回复 分享
发布于 2018-09-01 18:39
我二面面了1个小时,感觉也是凉。。。
点赞 回复 分享
发布于 2018-09-01 18:45
我二面 上来自我介绍 问了问都会啥➕学多久,然后就让我写组件,之后问了嘴重用优化,然后就说回去等,50mins不到
点赞 回复 分享
发布于 2018-09-01 19:21
楼主,视频面试链接提示“账户余额不足”是什么情况啊?
点赞 回复 分享
发布于 2018-09-02 13:48
arr.toString().split(',').map(val=>+val)
点赞 回复 分享
发布于 2018-09-02 21:51
返回指定数最后出现的位置不可以用lastIndexOf吗?
点赞 回复 分享
发布于 2018-09-02 23:12
var arr=[1,2,3,3,3,4,5]; function sun(arr,num){     var str=arr.join('');     return str.lastIndexOf(num); } sun(arr,3); 面试的时候可以使用这些“方法”吗
点赞 回复 分享
发布于 2018-09-02 23:25
老哥,稳
点赞 回复 分享
发布于 2018-09-04 11:09
没有人说科学计数法那题不对么...直接 return num.toString().replace(/\B(?=((\d{3})+)$)/g,','); 就行了不是么
点赞 回复 分享
发布于 2019-03-12 11:04
正则替换你那个函数还是有问题的,replace不改变str,str还是原串,需要赋值或者直接return新值。
点赞 回复 分享
发布于 2020-02-05 00:37

相关推荐

评论
5
142
分享
牛客网
牛客企业服务