前端面试题准备 - CSS
BFC 是什么?BFC 是 块级格式化上下文(Block Formatting Context) 的缩写。它定义了一个独立的渲染区域,包含了元素及其子元素的布局规则,决定了这些元素如何与其他元素进行交互,特别是在垂直方向上。 BFC 特点: 独立的布局环境:BFC 内部的元素布局不受外部元素的影响。 垂直方向上的布局规则:BFC 会影响元素如何在垂直方向上与其他元素进行排列。比如,BFC 内部的子元素会垂直排列,而外部的元素不会影响到内部的元素。 清除浮动:浮动元素脱离了正常的文档流,可能导致父容器高度塌陷。通过创建 BFC,父容器会自动“包裹”浮动的子元素,从而解决这个问题。 BFC 的触发条件: 浮动元素 (float: left; 或 float: right;)。 绝对定位的元素 (position: absolute; 或 position: fixed;)。 行内块元素 (display: inline-block;)。 块级元素 设置了 overflow 值为 hidden、auto 或 scroll。 弹性布局容器 (display: flex; 或...
前端面试题准备 - Webpack
什么是 Webpack?在现代前端开发中,代码通常是由 多个模块、各种格式的资源文件 (JavaScript、CSS、图片等)以及 第三方库 组成的。直接将这些文件部署到浏览器环境可能会导致 加载速度慢、兼容性问题、安全风险 等问题。因此,我们需要使用 Webpack、Vite、Parcel 等前端构建工具进行打包。 Webpack 是一个静态模块打包工具,主要用于将前端资源(如 JavaScript、CSS、图片等)打包成一个或多个静态文件。它将所有资源视为模块,并生成一个依赖图谱,用于描述各个模块之间的依赖关系。 主要功能: 模块化打包:支持 CommonJS、ES6 Modules、AMD 等模块化规范。 代码拆分:按需加载,提高页面性能。 资源管理:可以处理 CSS、图片、字体等静态资源,支持 Loaders 进行转换。 插件机制:提供强大的插件系统,如 UglifyJSPlugin(代码压缩)、HtmlWebpackPlugin(自动生成 HTML)等。 开发优化: 热模块替换(HMR, Hot Module...
前端面试题准备 - React
什么是 React?React 是一个简单的 javascript UI 库,用于构建高效、快速的用户界面。它是一个轻量级库,因此很受欢迎。它遵循组件设计模式、声明式编程范式和函数式编程概念,以使前端应用程序更高效。它使用虚拟 DOM 来有效地操作 DOM。它遵循从高阶组件到低阶组件的单向数据流。 React 生命周期React 组件的生命周期可以分为三个阶段: 挂载阶段(Mounting) 当 React 首次渲染元件,并把渲染后的节点加入 DOM 中时,我们称这时为 mounting。当 React 把节点加入到 DOM 后,浏览器会渲染并绘制画面。在这个阶段,生命周期将会依照下列的顺序呼叫这些方法: constructor(props) getDerivedStateFromProps(props, state) render() componentDidMount() 更新阶段(Updating) 在 mounting 后,如果一个元件的 prop 或 state 有变化时,就会触发重新渲染。重新渲染后,React 会去比较虚拟 DOM...
Leetcode Binary Search
35. Search Insert PositionDescriptionGiven a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. Click to view full description Example 1: Input: nums = [1,3,5,6], target = 5 Output: 2 Example 2: Input: nums = [1,3,5,6], target = 2 Output: 1 SolutionIdea: 使用二分查找,找到目标值,如果目标值不存在,则返回插入位置。 Complexity: Time: O(log n), Space: O(1) 123456789101112131415class Solution: def...
前端面试题准备 - JavaScript
JavaScript 数组常见的方法12345678910111213141516171819202122232425262728const arr = [1, 2, 3, 4, 5];arr.push(); //添加元素到数组末尾,返回新数组的长度arr.pop(); //删除数组最后一个元素,返回被删除的元素arr.shift(); //删除数组第一个元素,返回被删除的元素arr.unshift(); //添加元素到数组头部,返回新数组的长度arr.reverse(); //反转数组,返回新数组arr.every(); //判断数组中所有元素是否都满足某个条件,返回布尔值arr.some(); //判断数组中是否存在满足某个条件的元素,返回布尔值arr.forEach(); //遍历数组,没有返回值arr.filter(); //过滤数组,返回新数组arr.includes(); //判断数组中是否存在某个元素,返回布尔值arr.map(); //映射数组,返回新数组arr.reduce(); //累加数组,返回累加后的值arr.indexOf();...
前端面试题准备 - 网络 & 浏览器
OSI 七层与 TCP/IP 五层模型OSI 七层模型: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 TCP/IP 五层模型: 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 传输层:TCP,UDP 网络层:IP,ICMP,RIP,OSPF,BGP,IGMP 数据链路层:SLIP,CSLIP,PPP,ARP,RARP,MTU 物理层 应用层的协议哪些是基于 TCP 协议的,哪些是基于 UDP 协议的?基于 TCP 协议的协议: FTP(文件传输协议):定义了文件传输协议,使用 21 端口。 TELNET(远程登陆协议):一种用于远程登陆的端口,使用 23 端口,用户可以以自己的身份远程连接到计算机上,可提供基于 DOS 模式下的通信服务。 SMTP(简单邮件传输协议):邮件传送协议,用于发送邮件。服务器开放的是 25 号端口。 POP3(邮件读取协议):它是和 SMTP 对应,POP3 用于接收邮件。POP3 协议所用的是 110 端口。 HTTP(超文本传输协议):是从 Web...
Leetcode Greedy Algorithm
121. Best Time to Buy and Sell StockDescriptionYou are given an array prices where prices[i] is the price of a given stock on the i-th day. You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock. Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0. Click to view full description Example 1: Input: prices = [7, 1, 5, 3, 6, 4] Output: 5 Example...
Leetcode Heap
215. Kth Largest Element in an ArrayDescriptionGiven an integer array nums, return the kth largest element in the array. Note that it is the kth largest element in the sorted order, not the kth distinct element. Click to view full description Example 1: Input: nums = [3,2,1,5,6,4], k = 2 Output: 5 Example 2: Input: nums = [3,2,3,1,2,4,5,5,6], k = 4 Output: 4 SolutionIdea: 使用小顶堆来存储数组,堆的大小为 k,堆顶元素即为第 k 大的元素。 Complexity: Time: O(n log k), Space: O(k) 12345678910class Solution: def...
Leetcode Stack
20. Valid ParenthesesDescriptionGiven a string s containing just the characters (, ), {, }, [ and ], determine if the input string is valid. An input string is valid if: Open brackets are closed by the same type of brackets. Open brackets are closed in the correct order. Every close bracket has a corresponding open bracket. Click to view full description Example 1: Input: s = "()" Output: true Example 2: Input: s = "()[]{}" Output:...
Leetcode Backtracking
46. PermutationsDescriptionGiven an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. Click to view full description Example 1: Input: nums = [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] Example 2: Input: nums = [0,1] Output: [[0,1],[1,0]] SolutionIdea: 使用回溯法来生成所有可能的排列。通过递归地选择每个元素,并确保每个元素只被选择一次,来构建所有可能的排列。注意复制路径时需要使用 path[:] 来创建一个新的列表,而不是直接使用 path,因为 path 是一个引用,直接赋值会导致结果不正确。 Complexity: Time: O(n *...

