likes
comments
collection
share

经历了袋鼠云等家公司的拷打,我写下了这篇面经

作者站长头像
站长
· 阅读数 4

前言

最近也是到了春招的黄金时期,许多小伙伴们是不是像我一样,开始了面试呢?在准备面试的过程中,我也会去网上寻找一些博主的面经进行查漏补缺,所以我也希望在我面试完后写的面经可以帮助到一些小伙伴。3月即将过去,大家4月也要加油。

正文

自我介绍

首先,一般刚进入面试时,面试官通常会叫你自我介绍:我是谁+从哪里来+我做过什么+有什么成绩+为什么能胜任。

介绍一下你的项目

这基本上也是必问的一环,当你自我介绍完之后,面试官便会让你介绍一下你自己的项目。当你介绍完你的项目,面试官就会追问你的项目中的一些东西是怎么实现的,或者让你详细的介绍一下这个东西。 比如在我的项目中,我使用了token路由守卫,所以经常会有面试官询问我这两个东西。

tailwind有什么优势?

这是袋鼠云的一个面试官所提出的问题,看到我在简历上写了了解tailwind,你能说一下tailwind的优势吗?

  1. 快速开发: Tailwind提供了一组预定义的可重用的样式类,使得开发者可以快速构建界面而不必编写大量的自定义CSS。
  2. 灵活性: Tailwind采用原子类(Atomic CSS)的方式,即每个类都对应一个特定的CSS样式属性,不必担心样式之间的冲突。
  3. 响应式设计: Tailwind提供了一组响应式的工具类,使得开发者可以轻松地实现响应式设计,并根据不同的屏幕尺寸调整布局和样式。 满足项目的需求。

普通函数和箭头函数有什么区别

  1. 语法形式:

    • 普通函数使用function关键字来定义,例如:function add(a, b) { return a + b; }
    • 箭头函数使用箭头符号=>来定义,例如:const add = (a, b) => a + b;
  2. this 的指向:

    • 在普通函数中,this的值在运行时动态绑定,它的值取决于函数是如何被调用的。在全局作用域中,this指向全局对象(在浏览器环境中是window对象);在函数内部,this指向调用该函数的对象(如果有)。
    • 在箭头函数中,this的值是在定义函数时确定的,它捕获了所在上下文的this值。换句话说,箭头函数没有自己的this绑定,它继承了外围作用域的this值。
  3. arguments 对象:

    • 在普通函数中,可以使用arguments对象访问传递给函数的参数列表,它是一个类数组对象。
    • 在箭头函数中,没有自己的arguments对象,但可以使用ES6的剩余参数语法...args来获取所有传递给函数的参数。
  4. 构造函数:

    • 普通函数可以作为构造函数使用,并且可以使用new关键字来创建实例。
    • 箭头函数不能被用作构造函数,因此不能使用new关键字来创建实例。

你有听过严格模式吗

  1. 禁止使用全局变量: 在严格模式下,全局作用域中的变量必须显式声明,否则会抛出错误。这样可以防止意外地创建全局变量,提高代码的健壮性和可维护性。
  2. 禁止删除变量和函数: 在严格模式下,使用 delete 操作符删除变量或函数会抛出错误。这可以防止意外删除变量或函数,增加了代码的可靠性。
  3. 禁止使用未声明的变量: 在严格模式下,使用未声明的变量会抛出错误。这可以帮助开发者及时发现潜在的拼写错误或变量声明遗漏。
  4. 禁止重复的属性名: 在严格模式下,对象字面量中重复的属性名会导致语法错误。这可以避免一些错误的对象定义,提高代码的可读性和可维护性。
  5. 禁止使用 with 语句: 在严格模式下,with 语句会导致语法错误。这是因为 with 语句会引入变量的隐式作用域,容易引发混乱和错误,因此被弃用。
  6. 限制 eval 的使用: 在严格模式下,eval 函数会在其自身的作用域中运行,而不会在调用它的作用域中创建新的变量或函数。这样可以减少 eval 的潜在危险性,提高代码的安全性。

要在整个脚本文件或函数内启用严格模式,可以在文件或函数的开头添加 'use strict';。例如:

'use strict';

// 这是严格模式下的代码
function strictFunction() {
    'use strict';
    // 这是严格模式下的函数
}

在严格模式下,this 的行为与非严格模式下有一些不同之处。主要的区别在于在函数内部的 this 的指向。

在非严格模式下:

  • 如果函数被作为普通函数调用(而非作为对象的方法),this 会指向全局对象(在浏览器中是 window 对象)。
  • 如果函数作为对象的方法调用,this 会指向调用该函数的对象。

而在严格模式下:

  • 如果函数被作为普通函数调用,this 的值不再指向全局对象,而是 undefined
  • 如果函数作为对象的方法调用,this 会继续指向调用该函数的对象。

下面是一些示例来说明严格模式下 this 的行为:

'use strict';

function strictModeFunction() {
    console.log(this); // 输出:undefined
}

strictModeFunction(); // 在严格模式下调用普通函数,this 是 undefined

const obj = {
    name: 'Alice',
    greet: function() {
        console.log(this.name);
    }
};

obj.greet(); // 输出:Alice,在严格模式下调用对象的方法,this 仍然指向对象 obj

除了使用 'use strict' 字符串指令显式开启严格模式,有些情况下 JavaScript 会隐式地开启严格模式。这些情况包括:

  1. 模块化: 当使用 ECMAScript 6 的模块化语法时,即使用 importexport 来导入和导出模块时,模块内部会自动进入严格模式。
  2. 类: 在 ECMAScript 6 中引入了类(class)的概念。在类的内部(包括类的构造函数和方法)默认是严格模式的。
  3. JavaScript 模块: 在一些特定的环境中,比如 Node.js,执行模块文件时会默认开启严格模式。