前端开发面试题

本文聚焦前端面试,强调深入理解和表达理论知识的重要性,涵盖了HTML/CSS、JavaScript的基础与高级概念,以及算法和数据结构。文章提醒开发者要关注行业动态,不断提升,同时指出面试中展现真实能力与专业态度至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题是对理论知识的总结,学会更优秀的表达。

中心思想:

  • 本文收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习、透彻学习,形成自己的知识链。万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的!不可能的!不可能的!

  • 前端还是一个年轻的行业,新的行业标准, 框架, 库都不断在更新和新增,正如赫门在2015深JS大会上的《前端服务化之路》主题演讲中说的一句话:"每18至24个月,前端都会难一倍",这些变化使前端的能力更加丰富、创造的应用也会更加完美。所以关注各种前端技术,跟上快速变化的节奏,也是身为一个前端程序员必备的技能之一。

  • 希望前端er达到既能使用也会表达,对理论知识有自己的理解。可根据下面的知识点一个一个去进阶学习,形成自己的职业技能链。

几点注意:

  1. 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。

  1. 题目类型: 理论知识、算法、项目细节、技术视野、开放性问题、工作案例。

  1. 细节追问: 可以确保问到你开始不懂或面试官开始不懂为止,这样可以大大延展题目的区分度和深度,知道你的实际能力。因为这种知识关联是长时期的学习,临时抱佛脚绝对是记不住的。

  1. 回答问题再棒,面试官(可能是你面试职位的直接领导),会考虑我要不要这个人做我的同事?所以态度很重要、除了能做事,还要会做人。(感觉更像是相亲( •̣̣̣̣̣̥́௰•̣̣̣̣̣̥̀ ))

  1. 资深的前端开发能把absolute和relative弄混,这样的人不要也罢,因为团队需要的是:你这个人具有可以依靠的才能(靠谱)。

前端知识:

  1. HTML&CSS:对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型、选择器优先级、HTML5、CSS3、Flexbox

  1. JavaScript:数据类型、运算、对象、Function、继承、闭包、作用域、原型链、事件、RegExp、JSON、Ajax、 DOM、BOM、内存泄漏、跨域、异步装载、模板引擎、前端MVC、路由、模块化、Canvas、ECMAScript 6、Nodejs

  1. 其他:移动端、响应式、自动化构建、HTTP、离线存储、WEB安全、优化、重构、团队协作、可维护、易用性、SEO、UED、架构、职业生涯、快速学习能力

必须掌握

  1. DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。

  1. DOM操作 —— 如何添加、移除、移动、复制、创建和查找节点等。

  1. 事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差别。

  1. XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。

  1. 严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。

  1. 盒模型 —— 外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型

  1. 块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们

  1. 浮动元素 —— 怎么使用它们、它们有什么问题以及怎么解决这些问题。

  1. HTML与XHTML —— 二者有什么区别,你觉得应该使用哪一个并说出理由。

  1. JSON —— 作用、用途、设计结构。

一、算法与数据结构


1.理解与场景


是什么

算法:解题方案,指令,系统的 策略机制

程序=算法+数据结构~选择存储方式

算法依赖于数据结构

同样任务:不同的时间 空间或效率完成

特性

有限 确切 输入 输出 可行

场景

算法思维,走得更远和更稳让我

2.复杂度


前言

消耗资源和时间差异

衡量 优劣~时间 空间

关注最坏~上界(最好、平均)

时间复杂度

O(1)常数型、O(log n)对数型、O(n)线性型、O(nlogn)线性对数型、O(n2)平方型、O(n3)立方型、O(nk)k次方型、O(2n)指数型

functionprocess(n) {

leti=1; // ①

while (i<=n) {

i=i*2; // ②

}

}

循环语句中以2的倍数来逼近n,每次都乘以2。如果用公式表示就是1*2*2*2…*2<=n,也就是说2的x次方小于等于n时会执行循环体,记作2^x<=n,于是得出x<=logn

Ο(1)<Ο(logn)<Ο(n)<Ο(nlogn)<Ο(n^2)<Ο(n^3)<…<Ο(2^n)<Ο(n!)

空间复杂度

O(1)

O(n)

O(n^2)

其他:动态规划 动态分配空间 递归、栈

3.哪些 区别


是什么

存储 组织数据,相互之间有关系

分类~数据元素之间的关系

集合 线性 树型 图形

线性 非线性

哪些

常见:数组(散列表hash) 栈 队列 链表 树 图 堆

数组:相同类型变量有序

栈:先进后出,某端增删,先进后出,先进-栈底,后进-栈顶 杯子

队列:先进先出,前端删除,后端插入 买包子

链表:物理存储单元上非连续非顺序,逻辑结构指针确定,数据域+指针域

树:一个根节点,其他节点有一个前驱可由有很多后继

图:顶点和边 边是顶点的有序偶对。若2点存在边,相邻关系

堆:特殊的树,根节点的值最大或最小,根节点的2个子树也是一个堆

散列表:k 对应的位置 f(k) 若与k相等的记录,一定在f(k)的存储位置上,不需比较直接取得所查记录

区别

  • 线性结构有:数组、栈、队列、链表等

  • 非线性结构有:树、图、堆等

4.栈队列


堆栈 受限线性表

表尾~栈顶 插入和删除,先进后出 记忆的作用

push pop

[1,2,3,4] 1是头front 4是尾rear

从4的位置 插入和删除

队列

1的位置删除 4的位置插入

1队头

场景

"()"、"{}"、"[]"这些成对出现的符号

前部分 入栈,后部分对比匹配,若匹配,则出栈,若不匹配则出错

队列

顺序处理数据,数据量不断变化

广度优先搜索

2023-2-15

感谢菜鸟教程 vue3js的灵感

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值