【面试总结】字节跳动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
将更新内容提交到远程仓库
还有许多就不一一举例了
-
分支和主干的管理,最后的代码是怎样的
-
除了前端,还接触过哪些其他的技术
-
介绍一下我自己的某个项目,为什么选择用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);
- 解读
- 形参、实参
- 立即调用函数
- 箭头函数和普通函数区别
- this指向
- 变量提升、函数提升
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
-
http常见状态码、http头部缓存
面试尾声
- 面试官说因为时间有限,也就差不多了
- 问了几个问题,他们部门做哪方面的业务、对我这次面试的评价、给我的一些建议
面试官说到我的项目涉及面比较窄,要多涉及其他技术栈,多练习布局,打开一个网站,知道怎样布局、实现,能自己实现出来
总结
个人第一次线上面试献给了字节跳动。当然我自己很清楚自己的水平,这次面试的体验很好,面试官小哥哥很温柔,我不会的地方也在引导我,就是我水平不够,真是难为面试官了hhh。
很多概念性的东西都是可以提前好好准备的,不然面试官放一道题过来,一问就问出你水平了。
所以说,我们还是要坚持不断学习,机会永远不会等你准备好了才来的,一起加油呀朋友们!