秋招面试记录

面试过的各大厂面经

字节

  • html标签类型
  • meta作用
  • css盒模型
  • 用js向页面添加一个元素
  • 算法题:扁平化数组
  • 实现一个js函数A,传入一个带参数的函数B,实现用参数调用A实现B里的功能
  • 向刚刚添加的a标签添加点击事件
  • 如果一次性添加上千个a标签有没有性能优化方案
  • 如何给某ul下上千个li都添加鼠标点击事件,有没有优化方案
  • git都有哪几个存储区,都是干什么的
  • git实现xxx功能的代码(xxx忘了具体是什么了。。)

阿里

  • 先自我介绍
  • 针对我的实习问了一些关于做了什么软件,我干了什么之类的问题
  • html标签,meta作用
  • 做过移动端没,移动端meta作用?(忘了具体问题)
  • 讲一讲css选择器
  • position类型,具体区别
  • css盒模型
  • js的基本类型都有什么
  • js里this指针怎么判断指向(我回答谁调用指向谁)追问箭头函数的情况下指向谁
  • js如何实现跨域
  • 接触过代码打包吗
  • 简述一个域名从你发出到打开都经历了什么
  • 前端的性能优化方法

腾讯

  • 先自我介绍
  • 针对自我介绍问了项目具体技术栈,我做了啥
  • 针对简历
    • 个人博客最新发布的两个算法题解,第一个问我怎么想的,就针对js语言有没有其他更简单的实现方式(数组直接变数字加一),说说时间复杂度,不用while的话解决方法(递归)递归的条件说一下
    • 第二个题解说说思路,我就blbl说思路,然后说其他的解决方法等等
    • 还有很多简历上其他的,基本上写过的都问了
  • 用js去除一个字符中所有空格(replaceall)不用replaceall呢(replace加正则表达式)还有别的吗(slice)
  • 出了六道题在线做题
    • 纯css实现三角形
    • js实现typeof
    • 递归算法
    • 跨域
    • Css布局方式
    • url从输入到显示出画面都经历哪几步
      • 我写了三次握手,让展开讲讲blbl
      • 为什么是三次,两次呢?
      • 数组是怎么传输过来的(tcp blbl)
  • 简历有写数据库,如何给一个表有id和成绩,求平均成绩最好的那个
  • 他自己介绍了一下部门
  • 有什么问题

好未来

  • 先自我介绍

  • css部分

    • 左右固定中间可变怎么实现
    • 上边用flex,flex具体横向的属性叫什么
    • transform这个属性是干啥的(说了transit)
    • 如何使用transit实现右移100px
    • 如何用选择器实现table偶数行底色变红
    • 选择器都有哪些
  • js部分

    • js基本类型

    • ES6新增了什么类型

    • typeof用法,typeof null/undefined/array各自返回什么

    • 如何区分null 和 array

    • 如何获得一个元素的种类

      Object.prototupe.toString.call(a)

    • 假设有两个元素,一个对象一个数组,不知道种类前提如何遍历(用Array.isarray()判断出是数组然后进行for循环)

    • 除了for循环还有什么方法能遍历数组(map)

    • map和foreach有什么区别

    • 数组都有什么方法

    • 怎么遍历对象(for in)

    • ES6新增了for of,怎么用

    • 对象可以用for of吗

    • 假设现在给一个图片的url,如何创建一个img标签,给他设置url并且添加到body后边

      • 需要考虑url是否能用
    • 说说事件捕获和事件冒泡

    • _.proto. 和 prototype的区别,写一个例子来表示谁指向谁

  • 网络部分

    • 304代表什么,与200有什么区别

小黑盒(实习)

  • js ES5数据类型?ES6新增了什么类型?
  • 用map,set和new object创建对象的区别
  • var和let的区别
  • 给代码说结果
1
2
3
4
5
console.log(a)
var a = 1
console.log(a)
function a(){}
console.log(a)
  • css如何让元素居中?
    • 行内元素用text-align
    • 块级元素如何垂直居中(设top)
    • 块级不确定高度元素垂直居中(上述加transform:-50%且无height)
  • 用css创建三角形,原理?
  • 说说css盒模型,IE盒模型
  • 用css画一个大小为父元素宽度一半的正方形
  • transition和animation区别
  • css如何实现动画

一些笔试题

  • 如何实现add(1)(2)(3)...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function add(...arg) {
    var a = [...arg];
    _add = function (...innerArg) {
    if (innerArg.length === 0) {
    return a.reduce(function (a, b) { return a + b })
    } else {
    [].push.apply(a, innerArg)
    return _add;
    }
    }
    return _add
    }
    add(1)(2)(3)()//6
  • 如何实现数组扁平化

    1
    2
    3
    4
    5
    function flatten(arr) {  
    return arr.reduce((result, item)=> {
    return result.concat(Array.isArray(item) ? flatten(item) : item);
    }, []);
    }
    1
    2
    3
    4
    5
    6
    function flatten(arr) {
    return arr.toString().split(',').map(function(item) {
    return Number(item);
    })
    }

    1
    2
    3
    4
    5
    function flatten(arr) {
    return arr.join(',').split(',').map(function(item) {
    return parseInt(item);
    })
    }

美团

  • 自我介绍
  • 为什么想干前端
  • js数据类型
    • 怎么区分的基本类型和引用类型
  • js this指针,call,bind
  • 深拷贝
  • 算法:链表反转
  • promise
  • 网络302和304都代表什么
  • css如何实现水平垂直居中
  • vue框架原理

蒸汽记忆

一面:

  • js数据类型
  • Typeof(NaN)输出什么
  • null和undefined区别
  • 软件设计模式有哪些

二面:

  • 求平方根
  • 力扣第一题两数之和

春招

字节

  • 用nodejs读4G大文件的方法

  • js多线程的方式有哪些

  • 如何控制多线程的进度

  • 进程和线程的区别

  • 进程间通信,线程间通信

  • 管程是什么

  • Http2 和以前的有什么区别

  • js数据类型

  • 哪些数据类型是保存在堆空间,栈空间