2024-04-07 | UNLOCK

面试题

基础

请解释什么是CSS盒模型?

CSS盒模型是用于设计网页布局和定位元素的基本概念。每个HTML元素在页面上都被视为一个矩形的盒子,这个盒子包括内容区域、内边距、边框和外边距,这些部分共同构成了盒模型。

CSS盒模型包括以下几个要素:

  1. 内容区域(Content):这是盒子中实际包含内容的部分,比如文本、图片等。

  2. 内边距(Padding):内边距是内容区域与边框之间的空间,用于控制内容与边框之间的距离。

  3. 边框(Border):边框围绕在内容区域和内边距外部,用于界定盒子的边界。

  4. 外边距(Margin):外边距是盒子边框与相邻元素之间的空间,用于控制元素之间的距离。

在CSS中,盒模型有两种标准:

  1. 标准盒模型(Standard Box Model):在标准盒模型中,元素的宽度和高度仅包括内容区域(content),不包括内边距、边框和外边距。这意味着设置元素的宽度和高度时,是指内容区域的宽度和高度。

  2. IE盒模型(IE Box Model):在旧版Internet Explorer浏览器中使用的盒模型。在IE盒模型中,元素的宽度和高度包括内容区域、内边距和边框,但不包括外边距。这导致在计算元素的总宽度时,需要将内边距和边框的宽度加入。

在CSS中,可以通过box-sizing属性来控制盒模型的计算方式,常见取值包括:

  • content-box:标准盒模型,宽度和高度只包括内容区域。
  • border-box:IE盒模型,宽度和高度包括内容区域、内边距和边框。

理解CSS盒模型对于设计网页布局和控制元素之间的间距非常重要,可以帮助开发者更好地控制页面的外观和布局。

请解释什么是闭包?

闭包(Closure)是指函数和其周围引用环境(lexical environment)的组合。在JavaScript中,闭包允许函数访问其词法作用域(lexical scope)之外的变量,即使这些变量在函数被调用时已经处于外部作用域。

闭包通常由内部函数和对外部变量的引用组成。当内部函数在外部函数执行完毕后仍然可以访问外部函数的变量时,就形成了闭包。闭包可以捕获和维持函数执行时的状态,使得函数可以访问其创建时的作用域,即使在其定义的作用域之外执行。

闭包的特点包括:

  1. 内部函数可以访问外部函数的变量。
  2. 外部函数的变量在外部函数执行完毕后仍然可以被内部函数访问。
  3. 闭包可以保持对外部变量的引用,即使外部函数已经执行完毕。

闭包在JavaScript中有许多应用,例如:

  • 封装:通过闭包可以创建私有变量和方法,实现数据封装。
  • 模块模式:利用闭包可以创建模块化代码结构,避免全局作用域污染。
  • 高阶函数:闭包使得函数可以作为参数传递,实现高阶函数的功能。

需要注意的是,闭包可能会导致内存泄漏问题,因为闭包会持有对外部作用域的引用,如果闭包未正确释放,外部作用域中的变量无法被垃圾回收机制回收,从而导致内存泄漏问题。因此,在使用闭包时,需要注意避免循环引用或不必要地持有大量对象的引用。

请解释什么是事件冒泡和事件捕获?
请解释什么是跨域?如何解决跨域问题?
请解释什么是HTTP状态码?列举一些常见的HTTP状态码及其含义。
请解释什么是事件委托?
请解释什么是原型链?
请解释什么是防抖和节流?有什么区别?
请解释什么是异步编程?如何处理异步编程?
请解释什么是浏览器的同源策略?

进阶

请解释什么是TypeScript?它与JavaScript有什么区别?
请解释什么是Vue.js?它的核心特性是什么?
请解释什么是Sass和Less?它们与CSS有什么区别?
请解释什么是ESLint?它的作用是什么?
请解释什么是pnpm?它与npm有什么区别?
请解释什么是Vite?它与Webpack有什么区别?
请解释什么是Webpack?它的核心概念是什么?
请解释什么是React?它的生命周期有哪些阶段?
请解释什么是Redux?它的核心概念是什么?
请解释什么是Node.js?它的主要用途是什么?
请解释什么是Rollup?它与Webpack有什么区别?
请解释什么是Canvas?它的主要用途是什么?
请解释什么是SVG?它与Canvas有什么区别?
请解释什么是微信小程序?它的核心特性是什么?
请解释什么是正则表达式?它的常见用途有哪些?
请解释什么是性能优化?列举一些常见的性能优化策略。
请解释什么是前端工程化?它的核心概念是什么?
请解释什么是npm?它的主要用途是什么?
请解释什么是PostCSS?它与Sass/Less有什么区别?
请解释什么是单元测试?为什么进行单元测试?
请解释什么是自动化测试?为什么进行自动化测试?
请解释什么是Docker?它的主要用途是什么?
请解释什么是React Native?它与React有什么区别?

代码

请编写一个函数,判断一个字符串是否是回文字符串。
请编写一个函数,实现数组的冒泡排序。
请编写一个函数,实现数组的快速排序。
请编写一个函数,实现数组的去重。

评论加载中