【面试总结】字节跳动2019校招前端一面

前言

上个月底的时候向字节跳动投了简历,本来也是本着试一试的心态的,上星期收到了字节跳动效率工程部门的hr小姐姐的电话约面试了。
后来因原本约定的时间有另外的事情,就跟hr小姐姐改了时间,效率也是十分棒。

面试准备

在网上看了许多大家的面经,边复习边总结。
重新看了一下自己当时投的简历,做好被问的准备。
复习常考的算法。

面试进行

面试前奏

  • 先是自我介绍,说了一下自己的基本信息,介绍了自己的项目。
    然后面试官对我说,可以说一下自己对一些框架、工具的熟悉程度、使用过哪些,都可以说一下

  • git的常用命令
    git init 初始化:创建一个git仓库,创建之后就会在当前目录生成一个.git的文件
    git add filename 添加文件:把文件添加到缓冲区
    git add . 添加所有文件到缓冲区
    git commit -m "提交的说明"
    git status 查看git库的状态
    git branch 分支名 创建分支
    git checkout 分支名 切换当前分支到指定分支
    git checkout -b 分支名创建分支并切换到创建的分支
    git merge 分支名 合并某分支的内容到当前分支
    git branch -d 分支名 删除分支
    git pull 从远端库更新内容到本地
    git push 将更新内容提交到远程仓库

还有许多就不一一举例了

  • 分支和主干的管理,最后的代码是怎样的
分支:不会影响整个项目里面的主线文件

git branch 列出本地分支,带*号表示当前所在分支。
git branch -r 列出所有远程分支。
git branch -v 列出本地命令。
git branch [本地分支名称] [远程分支名称] 创建本地分支。
git checkout [分支名称] 切换当前分支。
git fetch 获取分支信息,其它同事添加/删除了远程分支,你得fetch一下才能看到。
git push origin [本地分支]:[远程分支] 提交分支,如果创建此分支则为git push origin 本地分支名。
git merge [分支名称] 将某分支合并到当前分支,仅是合并到了本地,因此合并完成后还需要push。

————————————————
版权声明:本文为CSDN博主「阿甘人生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/phpwww/article/details/44339647
  • 除了前端,还接触过哪些其他的技术

  • 介绍一下我自己的某个项目,为什么选择用vue

面试高潮

后来面试官直接出题,再从中发散地提问

1

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2;
  },
  perimeter: () => 2 * Math.PI * this.radius
};

// 下列语句的返回值分别是什么?
(diameter => diameter())(shape.diameter);
(s => s.perimeter())(shape);
  • 解读

  • 形参、实参

  • 立即调用函数

    1.js 中的立即执行函数
    2.Javascript-立即调用函数表达式
    3.IIFE(立即调用函数表达式,自执行匿名函数)

    函数声明和函数表达式不同之处在于
    1、JavaScript 引擎在解析 JavaScript 代码时会“函数声明提升”,提升当前执行环境(作用域)上的函数声明,而函数表达式必须等到 JavaScript 引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式。
    2、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以 fnName() 形式调用。
    用括号包裹是为了将函数声明转换成函数表达式,消除了 javascript 引擎识别函数表达式和函数声明的歧义,告诉 javascript 引擎这是一个函数表达式,不是函数声明,可以在后面加括号,并立即执行函数的代码。

    立即调用函数表达式一般在3种情况下运用:
    1、立刻执行的函数(注意:此函数因为立刻执行,所以只能执行一次,不能反复调用)
    2、防止命名冲突,解决命名空间和变量污染的问题。
    3、创建闭包,保存状态,隔离作用域

  • 箭头函数和普通函数区别

    普通函数和箭头函数的区别

    1. 声明方式不同
    2. this指向
      箭头函数中的this是在定义函数时绑定,普通函数是在执行函数时绑定
      箭头函数没有prototype(原型),所以箭头函数本身没有this,它的 this 是继承它的父作用域的(即上层作用域);
      箭头函数不能直接使用call等方法来修改它的this指向,但是可以间接修改,去修改被继承的普通函数的this指向,然后箭头函数的this指向也会跟着改变;
      箭头函数外层没有普通函数,严格模式和非严格模式下它的this都会指向window(全局对象)
    3. 箭头函数的this指向全局,使用arguments会报未声明的错误
    4. 使用new调用箭头函数会报错,因为箭头函数没有constructor

2

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 0);
}
  • 用var、let、const分别输出什么
  • var let const 区别
  • 能否重复声明、是否可以声明前使用
  • 局部作用域,为什么用let就是0 1 2

这里可以参考一下我的这篇文章

给了一道题

/**
 * 设定如下对应关系
     A: 1,
     B: 2,
     C: 3,
     ...
     Z: 26,
     AA: 27,
     AB: 28,
     AC: 29,
     ...
     AZ: 52,
     BA: 53,
     BB: 54,
     ...
     ZZ: 702
     AAA: 703
     AAB: 704
     ...
 * 写一个转换函数,根据上面规则把一个字符串转换为数字
 * str2Int('ABCDEFG') → 334123303
 */
function str2Int(str) {
  var answer = 0;
  for (var i = str.length; i > 0; i--) {
    answer += Math.pow(26, str.length-i) * (str[i-1].charCodeAt(0) - 'A'.charCodeAt(0) + 1);
  }
  return answer;
}
console.log(str2Int('AAB'));
  • css动画:transition、animate

1.CSS3动画合集:(帧动画)(补间动画)(呼吸动画(由小到大)(由上到小)) 上
2.css3动画

  • http常见状态码
1xx 表示信息,服务器收到请求,需要请求者继续执行操作
100 Continue 信息型状态响应码表示目前为止一切正常, 客户端应该继续请求, 如果已完成请求则忽略
101 Switching Protocol(协议切换)状态码表示服务器应客户端升级协议的请求(Upgrade请求头)正在进行协议切换。

2xx 表示成功,操作被成功接收并处理
200 服务器成功处理了请求并提供请求的页面。
202 服务器已接受请求,但尚未处理。最终该请求可能会执行,也可能不执行。
204 服务器成功处理了请求,但没有返回任何内容。

3xx 表示重定向,需要进一步的操作以完成请求
301 表示客服端请求的文档在其他地方,新的URL地址在Location头中给出,浏览器应该自动访问新的URL。
302 临时重定向,类似于301,但新的URL应该被视为临时性的代替,而不是永久性的。
304 客户端有缓存的文档并发出一个条件性的请求。服务器告诉客户,原来缓存的文档还可以继续使用。

4xx 客户端错误,请求包含语法错误或无法完成请求
400 请求出现语法错误。
401 请求要求身份验证(未授权),对于需要登录的页面,服务器可能返回此响应。
403 服务器拒绝请求(禁止)。
404 服务器找不到请求的页面(未找到)。

5xx 服务器错误,服务器在处理请求的过程中发生了错误
500 服务器遇到错误,无法完成请求(服务器内部错误)。
501 服务器不具备完成请求的功能(尚未实施)。
503 服务器目前无法使用(超载或停机维护,服务器不可用)。
505 服务器不支持请求中所用的HTTP协议版本。

面试尾声

  • 面试官说因为时间有限,也就差不多了
  • 问了几个问题,他们部门做哪方面的业务、对我这次面试的评价、给我的一些建议
    面试官说到我的项目涉及面比较窄,要多涉及其他技术栈,多练习css布局

总结

个人第一次线上面试献给了字节跳动。当然我自己很清楚自己的水平,这次面试的体验很好,面试官小哥哥很温柔,我不会的地方也在引导我,就是我水平不够,真是难为面试官了hhh。
很多概念性的东西都是可以提前好好准备的,不然面试官放一道题过来,一问就问出你水平了。
所以说,我们还是要坚持不断学习,机会永远不会等你准备好了才来的,一起加油呀朋友们!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值