跳至主要內容

yyshino大约 5 分钟FrontEnd面经

兴盛优选前端面经

内部员工回复

1、介绍一下栈和队列

2、介绍一下树和图

3、生活中常见的称作树的案例

4、请说出几种算法复杂度为O(n^2)的排序算法

5、请说出几种算法复杂度为O(nlgn)的排序算法

6、算法复杂度为O(n)的排序算法

7、算法设计题:买卖股票(一次买入一次卖出)——动态规划

8、算法设计题:买卖股票(多次买入多次卖出)——贪心算法

9、解释下什么是promise

  • Promise 对象用于表示一个异步操作的最终完成(或失败)及其结果值。
  • 存在三种状态:
    • 待定(pending):初始状态,既没有被兑现,也没有被拒绝。
    • 已兑现(fulfilled):意味着操作成功完成。
    • 已拒绝(rejected):意味着操作失败。
  • .then .catch返回的也是也个Promise对象,所以它们可以被链式调用。

10、解释下原型链的概念

  • 原型链可以简单理解为将原型连成一条链,js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中查找,如果原型对象中还查不到,就回去原型对象的原型中查找,也就是按照原型链查找,直到查找到原型链的顶端,也就是Object的原型。

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

  • 语法更加简洁、清晰()
  • 箭头函数不会创建自己的this(箭头函数不会创建自己的this,所以它没有自己的this,它只会从自己的作用域链的上一层继承this。)
  • 箭头函数继承而来的this指向永远不变(.call()/.apply()/.bind()无法改变箭头函数中this的指向)
  • 箭头函数不能作为构造函数使用
  • 箭头函数没有自己的arguments
  • 箭头函数没有原型prototype

12、解释下弹性和布局

  • Flex布局也称弹性布局,可以为盒状模型提供最大的灵活性,是布局的首选方案,现已得到所有现代浏览器的支持。(设为 Flex 布局以后,子元素的floatclearvertical-align属性将失效。)

  • 容器属性

    • flex-direction:决定主轴方向 (row column

    • flex-wrap:当轴线放不下成员时,是否换行 (wrap nowrap)

    • flex-flow:前两个属性(flex-direction flex-wrap)的缩写

    • justify-content:成员在主轴上的对齐方式 (flex-start flex-end center space-between space-around

    • align-items:成员在交叉轴上如何对齐 (flex-start flex-end center stretch baseline

      • stretch默认值:如果成员未设置高度或设为auto,将占满整个容器的高度。
      • baseline: 成员的第一行文字的基线对齐。
    • align-content:属性定义了多根轴线的对齐方式。如果成员只有一根轴线,该属性不起作用,取值为flex-start | flex-end | center | space-between | space-around | stretch

  • 成员属性

    • order:定义成员的排列顺序,数值越小,排列越靠前,默认为0
    • flex-grow:属性定义成员的放大比例,默认为0
    • flex-shrink:属性定义了成员的缩小比例,默认为1,即如果空间不足,该成员将缩小
    • flex-basis:属性定义了在分配多余空间之前,成员占据的主轴空间main size,浏览器根据这个属性,计算主轴是否有多余空间,它的默认值为auto,即成员的本来大小。
    • flex:属性是flex-grow, flex-shrinkflex-basis的简写,默认值0 1 auto。后两个属性可选。
    • align-self:**属性允许单个成员有与其他成员不一样的对齐方式,可覆盖align-items属性。**默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

13、解释下绝对定位和相对定

  • relative:相对定位,在不改变页面布局的前提下调整元素位置
  • absolute:绝对定位,相对于定位祖先元素进行偏移定位

14、操作系统的线程和进程的区别

  • 进程:是执行中一段程序,一个程序被载入到内存中并准备执行,它就是一个进程,是系统进行资源分配和调度的一个基本单位。

  • 线程:是进程的一个实体,是cpu 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,有时被称为轻量级进程

  • 进程是资源分配最小单位,线程是程序执行的最小单位;

  • 进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段,线程没有独立的地址空间,它使用相同的地址空间共享数据;

15、线程和进程哪一个对系统的资源占用更多

  • CPU切换一个线程比切换进程花费小;
  • 创建一个线程比进程开销小;
  • 线程占用的资源要⽐进程少很多。

16、打开了两个标签页是进程还是线程

  • 进程

17、介绍一下自己的项目情况

18、登录这一块怎么设计的

19、手机验证码登录怎么实现的

20、上传文件的功能

21、项目中最大的挑战是什么?

22、本科生课程有前端学习课程吗?

23、为啥选择做前端

24、有读研的打算吗

25、毕业之后想做什么,干什么类型的职位

26、预计可以实习多久,啥时候可以实习

27、反问