面经(百度,头条。。。)

本文汇总了一系列前端面试题目,覆盖了HTML、CSS、JavaScript基础知识,深入探讨了Vue框架的使用及原理,同时还包括了算法、网络知识等内容,是前端开发者准备面试的好资料。

杭州有赞

一面(16分钟)

  1. 实习经历,技术栈
  2. let,const
  3. 盒子模型
  4. 跨域,cors简单请求和非简单请求

二面

  1. 快排
  2. url的解析
  3. vue父子通信,双向绑定
  4. webpack考察,输出到同一个文件
  5. vue和jquery的比较……
  6. 性能优化

隔了很久三面

聊骚

hr面,貌似挂了

便利蜂一面过

  1. 跨域后callback的访问(也就是个作用域问题)
  2. 盒子模型和box-sizing
  3. 正则表达式,trim
  4. 事件的绑定
  5. https(中间的公钥私钥)
  6. this作用域
  7. 串行bind是否有作用。妈蛋没回答起
  8. 对象的检测(除开null)
  9. 数组的多种方法
  10. 单页应用原理(pushstate和hashchange)
  11. ajax源码,传输数据的格式(表单格式和json格式)
  12. http的请求报文格式

cvte

一面

  1. 针对项目考查vue-router和vuex原理
  2. let和const,讲解下暂死性死区
  3. 讲解下原型
  4. 说一下闭包
  5. 快排的原理
  6. bfc

二面

面到晚上10点50分钟,挂

  1. 写一个diff({name: ‘aa’}, {name: ‘bb’})类似的算法,一个递归写了20分钟
  2. vue的优点
  3. service worker
  4. 最近了解什么新技术
  5. position
  6. http缓存,if-modified-since和if-none-match的优先级

ofo

一面(40分钟)

等通知中

  1. 自我介绍
  2. vuex状态管理的方式,全局与局部状态以及怎么获取
  3. vue和react的区别
  4. 盒子模型
  5. 定位
  6. 浮动
  7. bfc
  8. 垂直水平居中
  9. es6了解多少

    console.log(1);
    new Promise(function(resolve, reject) {
        console.log(2);
        reject(false);
        setTimeout(function() {
            console.log(3);
            resolve(true)
        },0)
    }).then(function() {
        console.log(4);
    },function() {
        console.log(5);
    })
    console.log(6)
  10. less和sass用过吗?

  11. 写过node吗?没有,了解过
  12. 学过npm包吗?没有
  13. 说一说webpack配置,loader具体
  14. 特长爱好,与人怎样沟通

二面

  1. 了解在公司实习学到的东西,很具体的说了一下
  2. 然后基本没问什么东西

结果给了sp很诧异

京东一面(30分钟,卒)

  1. 说说实习,技术栈
  2. 用flex实习三栏布局
  3. 模块化规范,seajs打包的时候什么什么的具体忘了,反正没回答起
  4. vue组件复用
  5. cdn缓存了解吗?公司有用cdn吗?不知道。。。
  6. 浏览器缓存
  7. ajax整个过程
  8. vue父子组件通信

饿了么大前端

一面

9.18 10:30。比我先去的面试者站着坑让我等了30分钟, 进去有实习经历呀?我们加快点速度吧。。感觉有点水。

  1. apply/call/bind用法,bind链式有用吗,apply传对象报错吗
  2. 判断对象
  3. 哪些类型有toString方法
  4. arguments转换成数组
  5. 类数组
  6. 往body里插入节点
  7. 写个算法,求数组元素连续乘积最大值
  8. http结构
  9. http缓存
  10. 学信息安全呀,说说https

二面

面试官看了我的github,我的代码那些都看了。问了几个相关问题,给了点建议,感觉面试官算法挺强的

三面

  1. 原型链
  2. 关于function

    new function() {
    return 'aaaaa'
    }
    //得到的实例是什么
  3. 跨域
  4. css module原理

后面的忘记了,估计挂了

好未来

一面

  1. 手写圣杯布局
  2. 关于bfc及形成条件,并出一道题
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html, body{
            height: 100%;
            width: 100%;
        }
        .left{
            float: left;
            width: 100px;
            height: 400px;
        }
        .right{
            overflow: hidden;
        }
        .right::after{
            display: block;
            content: "";
            clear: both;
        }
        li{
            float: left;
            width: 60px;
            height: 60px;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="left">

        </div>
        <ul class="right">
            <li>12</li>
            <li>12</li>
            <li>12</li>
            <li>12</li>
            <li>12</li>
            <li>12</li>
        </ul>
    </div>
</body>
</html>

问题:为什么right的高度也变成了400

  1. 手写promise的简单实现
  2. 手写bind的实现
  3. 实习公司使用的技术栈
  4. 聊了聊服务器端渲染
  5. 循环引用解决方案

二面

  1. 操作系统,进程,线程,协程。进程间的通信
  2. 如何不借助第三个变量交换两个变量的值。操作系统的堆栈和数据结构的堆栈区别
  3. 计算机网络,流量控制,拥塞避免
  4. https和http的区别及https的过程,rsa算法大概
  5. http缓存,验证过程。etag的生成,后端怎么取etag和怎么生成
  6. 介绍xss,及防范。及具体使用
  7. cookie中http only和secure属性
  8. 手写数组去重unique,考虑各种类型。
  9. 数组的判断方法
  10. 异步流程控制
  11. vue-router的原理,及history模式
  12. vue虚拟dom的原理
  13. vue的双向绑定机制
  14. webpack热更新原理

面试官加了我微信,聊了,申请sp本来想去的。。。

百度

一面

  1. 手写三栏布局,并要等高
  2. 解决兄弟元素margin-bottom和margin-top的折叠问题
  3. 写个深拷贝
  4. 实现以下函数从1打印到10,log只可以调用
let log = (callback) => {
    log.count = log.count || 0;
    log.count++
    if(callback && typeof callback == 'function') {
        setTimeout(() => {
            console.log(log.count);
            callback();
        }, Math.random()*count*1000)
    }
}

//这下想到的方案
function doIt() {
    new Promise((resolve) => {
        if(count !== 10) {
            log(resolve);
        }
    }).then(() => {
        doIt();
    })
}
doIt();
  1. 用map实现reduce(不会)
  2. 对实习公司项目的剖析
  3. 原型链
  4. 关于继承

二面

  1. 垂直水平居中
  2. 异步流程控制
  3. Promise.all
  4. p 的状态是啥

    var p = new Promise((resolve, reject) => {
        reject();
    }).then(null, (err) => {
    
    })
  5. 了解sass和less吗?
  6. webpack的配置,写过plugin吗?loader的作用?install过哪些包
  7. 解释原型链
  8. 解释作用域
  9. 数组reduce怎么实现(不会)。
  10. margin和padding的区别。
  11. 从后端返回三个英文段,统计所有单词出现的次数。
  12. 模块引入机制

三面

  1. 自我介绍
  2. 手写,n长的数组,里面是不重复的从1到n+1的数,乱序。计算缺少哪个数。
    先将arr排序,然后前后相减。
  3. 剖析个人心理及性格。感觉回答的不好。

!!!!!等了三周通知过了

网易

一面

  1. 根据简历上写的问,没写代码
  2. 解释bfc
  3. 说说圣杯布局
  4. 说一下公司实习学到了什么
  5. 讲一下你写的轮播,怎么封装,暴露哪些参数
  6. 写一个快排

二面

  1. 如果让你实现日期组件,你怎么实现,思路
  2. call和apply的区别
  3. 如果一个元素旋转45度,那他的y轴会变吗
    意思就是旋转45度后,再设置top,这个试了是不会变的

        function isEqual(arg1, arg2) {//不能判断像new Boolean这种还有regexp还有date类型
            var flag = true,
                _toString = Object.prototype.toString,
                len1 = Object.keys(arg1).length,
                len2 = Object.keys(arg2).length;
            if(arg1 === arg2) {//string, null, undefined, number
                return true;
            }
            if(_toString.call(arg1) !== _toString.call(arg2)) {//一个对象一个数组
                return false;
            }
            if(len1 !== len2) {
                return false;
            }
            for(var key in arg1) { 
                if(arg2.hasOwnProperty(key)) {
                    flag = isEqual(arg1[key], arg2[key]);
                }else {
                    return false;
                }
            }
            return flag
        }
  4. 页面间的通信

  5. slice和splice的区别
  6. 淘宝放大图怎么做

hr面

。。。。

头条

一面

  1. 说说bfc
  2. 清除浮动
  3. 实现三行布局
  4. http缓存
  5. 以下执行效果

    var dat = new Date();
    for(var i = 0; i < 5; i++) {
    setTimeout(function() {
    console.log(Date.now() - dat, i)
    }, 1000)
    }
  6. 单点登录怎么做
  7. 字符串排版
    要求,[‘this’, ‘is’, ‘my’, ‘favorite’, ‘food’],输出一个数组,包含的字符串最长为n,并且右对齐。如n为8,输出[’ this is’, ’ my’, ‘favorite’, ’ food’];
  8. 函数节流

二面

  1. 一个项目有很多页面, webpack怎么设
  2. setState异步吗
  3. 性能优化
  4. 函数节流
  5. 统计一个字符串中出现最多的字母
  6. rn的优势
  7. headless chrome和phantomJS的对比
  8. 一个list view,往下划dom节点越来越多,怎么优化

三面十五分钟送走

先展示下效果 https://pan.quark.cn/s/a4b39357ea24 遗传算法 - 简书 遗传算法的理论是根据达尔文进化论而设计出来的算法: 人类是朝着好的方向(最优解)进化,进化过程中,会自动选择优良基因,淘汰劣等基因。 遗传算法(英语:genetic algorithm (GA) )是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。 进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择、杂交等。 搜索算法的共同特征为: 首先组成一组候选解 依据某些适应性条件测算这些候选解的适应度 根据适应度保留某些候选解,放弃其他候选解 对保留的候选解进行某些操作,生成新的候选解 遗传算法流程 遗传算法的一般步骤 my_fitness函数 评估每条染色体所对应个体的适应度 升序排列适应度评估值,选出 前 parent_number 个 个体作为 待选 parent 种群(适应度函数的值越小越好) 从 待选 parent 种群 中随机选择 2 个个体作为父方和母方。 抽取父母双方的染色体,进行交叉,产生 2 个子代。 (交叉概率) 对子代(parent + 生成的 child)的染色体进行变异。 (变异概率) 重复3,4,5步骤,直到新种群(parentnumber + childnumber)的产生。 循环以上步骤直至找到满意的解。 名词解释 交叉概率:两个个体进行交配的概率。 例如,交配概率为0.8,则80%的“夫妻”会生育后代。 变异概率:所有的基因中发生变异的占总体的比例。 GA函数 适应度函数 适应度函数由解决的问题决定。 举一个平方和的例子。 简单的平方和问题 求函数的最小值,其中每个变量的取值区间都是 [-1, ...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值