字节前端一面总结
第一次去字节面试,面的是前端的飞书,由于自己学的太杂,前端方面反而学的不够精,同时准备时间也不多,这次就体验了一次被问的一脸懵逼的感觉。
1.首先是自我介绍
我介绍了自己来自哪所大学,做过哪些项目,学到了什么。
2.问大学学所学课程
C、C++、Java、数据结构、计算机网络、Web开发、PHP、软件工程导论、软件需求等。
3.计算机网络所学内容
学到了网络的架构,有标准的7、5、4层,目前在学。
4.计算机网络的7、5、4层模型
在这里插入图片描述
5.http属于哪一层模型
属于应用层
6.对数据结构理解
数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素的集合。它包含三方面的内容,逻辑关系、存储关系以及操作。正确的算法的含义是:能够解决实际问题,输入的所有可能的合法的输入都能产生预期的正确的结果;能够在有穷的步骤内执行完程序;能够用最简短的语句最高效的完成任务。
7.数据结构里面学到了什么
数组、栈、队列、链表、树、图、堆、散列表
8.数据结构里面的树有哪些特殊的树
二叉树、平衡二叉树、B树、B+树、B*树等
其中二叉树分为满二叉树和完全二叉树
9.排序算法有哪些
冒泡排序、选择排序、快速排序、归并排序等
10.查找算法有哪些
顺序查找、二分查找、插值查找、哈希查找等
11.对空间复杂度和时间复杂度的理解
时间复杂度的全称是渐进时间复杂度(asymptotic time complexity),表示算法的执行时间与数据规模之间的增长关系。
空间复杂度全称就是渐进空间复杂度(asymptotic space complexity),表示算法的存储空间与数据规模之间的增长关系。
12.冒泡排序的时间复杂度
O(n2)
13.时间复杂度里面为什么有个log
比如
for (int i=1;i<n;i*=2) ;
循环log2(n)次
根据log换底公式
最终复杂度写成Ο(log(n))
14.数据库分为哪两种数据库
-
关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。
-
非关系型数据库,指分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。
15.JS闭包算法题
写出下面这段代码打印的结果:
var result = [];
var a = 3;
var total = 0;
function foo(a) {
var i = 0;
for (; i < 3; i++) {
result[i] = function() {
total += i * a;
console.log(total);
}
}
}
foo(1);
result[0]();//3
result[1]();//6
result[2]();//9
16.了解过js的闭包吗
建议查看这篇JavaScript 闭包和递归(和上一篇对应)。
17.Js有哪些数据类型
参考这篇文章
18.为什么要使用Vue
vue的优势:轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快。
19.Vue的双向数据绑定底层实现原理(用js)
参考这篇Vue的双向绑定原理和实现
20.什么是设计模式
参考这篇什么是设计模式
21.什么是事件循环
参考这篇深入理解JavaScript的事件循环(Event Loop)
22.什么是冒泡事件
参考这篇什么是冒泡事件?
23.总结
由于平时做项目我都是做后端的,前端这部分局限在了解的阶段。后面面试我已经知道自己还有很多需要完善的地方,问了前辈有什么意见吗。前辈说,做计算机这个行业,做前端是要成为一个软件工程师,哪些方面都要了解一点,不能太过于局限。
总之,六月再战吧!