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

前言

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

正文

自我介绍

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

面试官您好,我叫xxx,某某大学25届软件工程专业,想来贵公司参前端岗位实习。平时热爱学习,课余时间也会打打篮球,参加各种社团俱乐部丰富自己的社交范围和兴趣爱好。在校被评为优秀学生,优秀班干部,拿过校级奖学金。个人比较喜欢前端,也用node写一些简单的后端代码。仔细读过《你不知道的Javascript》。同时,在学习前端知识的过程中,也会在掘金上写写JS系列基础和底层的文章,并是掘金的优秀创作者,掘金创作者等级五级,2023年度优秀作者No.37名。阅读过vue、axios、ElementPlus的源码,未来会持续学习。

介绍一下你的项目

这基本上也是必问的一环,当你自我介绍完之后,面试官便会让你介绍一下你自己的项目。当你介绍完你的项目,面试官就会追问你的项目中的一些东西是怎么实现的,或者让你详细的介绍一下这个东西。 比如在我的项目中,我使用了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';。例如:

js 复制代码
'use strict';

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

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

在非严格模式下:

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

而在严格模式下:

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

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

js 复制代码
'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,执行模块文件时会默认开启严格模式。
相关推荐
随风一样自由8 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
IMPYLH9 小时前
HTML 的 <data> 元素
前端·html
YHHLAI9 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
leoZ23111 小时前
Claude 驱动的全栈开发:Spring Boot + Vue 的 BS 架构实践
vue.js·spring boot·架构
kyriewen11 小时前
我扒了 GPT-5.6 的全部编程跑分——有一项 OpenAI 没敢放出来
前端·gpt·ai编程
前端H12 小时前
微前端 v3 架构升级:从加载隔离到状态协同
前端·架构·状态模式
陆枫Larry13 小时前
小程序包体积优化:用 SVG 图片替换 iconfont,并保留 CSS 控色能力
前端
兰令水14 小时前
leecodecode【面试150】【2026.7.9打卡-java版本】
java·数据结构·leetcode·面试·职场和发展
环境栈笔记14 小时前
多账号浏览器选型检查清单:Profile、权限、Session 和任务日志怎么评估
前端·人工智能·后端·自动化
前端炒粉14 小时前
手写promise
java·前端·javascript