Web前端最全既然可以进腾讯字节阿里等大厂工作,为什么要高薪进小公司?,面试官不录用你的暗示

前端框架

前端框架太多了,真的学不动了,别慌,其实对于前端的三大马车,Angular、React、Vue 只要把其中一种框架学明白,底层原理实现,其他两个学起来不会很吃力,这也取决于你以后就职的公司要求你会哪一个框架了,当然,会的越多越好,但是往往每个人的时间是有限的,对于自学的学生,或者即将面试找工作的人,当然要选择一门框架深挖原理。

以 Vue 为例,我整理了如下的面试题。

Vue部分截图

如果你觉得对你有帮助,可以戳这里获取:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

其次,面试官在问一些问题的时候,尽管你知道该如何回答,但是表述不清楚依旧会减分;

最后,刷题可以帮助梳理前端核心知识点,查缺补漏,预防面试中可能出现的忘记某方面知识的尴尬情况。

那么,要熟悉掌握那些知识点?那些大厂前端面试喜欢问什么呢?又该怎么面呢?

不容错过的技术点


JavaScript

  • 执行上下文,尤其是词法作用域和闭包;

  • 提升、函数和块作用域,以及函数表达式和声明;

  • 绑定——特别是 call、bind、apply 和 this;

  • 对象原型、构造函数和 mixin;

  • 组合和高阶函数;

  • 事件委托和冒泡;

  • 使用 typeof、instanceof 和 Object.prototype.toString 进行类型转换;

  • 使用回调、promise、await 和 async 处理异步调用;

  • 什么时候可以使用函数声明和表达式。

DOM

知道如何遍历和操作 DOM 非常重要,对于重度依赖 jQuery 或者开发了很多 React & Angular 类型应用程序的候选人来说,他们可能会在这个问题上栽跟斗。你可能不会每天都直接接触 DOM,因为我们大多数人都在使用各种抽象。在不使用第三方库的情况下,你需要知道如何执行以下这些操作:

  • 使用 document.querySelector 选择或查找节点,在旧版浏览器中使用 document.getElementsByTagName;

  • 上下遍历——Node.parentNode、Node.firstChild、Node.lastChild 和 Node.childNodes;

  • 左右遍历——Node.previousSibling 和 Node.nextSibling;

  • 操作——在 DOM 树中添加、删除、复制和创建节点。你应该了解如何修改节点的文本内容以及切换、删除或添加 CSS 类名等操作;

  • 性能——当有很多节点时,修改 DOM 的成本会很高,你至少应该知道如何使用文档片段和节点缓存。

CSS

至少,你应该知道如何在页面上布局元素,如何使用子元素或直接后代选择器来定位元素,以及什么时候该用类、什么时候该用 ID。

  • 布局——安排彼此相邻的元素的位置,以及如何将元素布置成两列或三列;

  • 响应式设计——根据浏览器宽度大小更改元素的尺寸;

  • 自适应设计——根据特定断点更改元素的尺寸;

  • 特异性——如何计算选择器的特异性,以及级联如何影响属性;

  • 适当的命名空间和类命名。

HTML

知道哪些 HTML 标签最能代表你正在显示的内容以及相关属性,应该掌握手工知识。

  • 语义标记;

  • 标记属性,例如 disabled、async、defer 以及何时使用 data-*;

  • 知道如何声明 doctype(大多数人不是每天都会写新页面,所以可能会忘了这个)以及可以使用哪些元标签;

  • 可访问性问题,例如,确保输入复选框具有更大的响应区域(使用标签“for”)。另外还有 role=“button”、role=“presentation”,等等。

系统设计

  • 渲染——客户端渲染(CSR)、服务器端渲染(SSR)和全局渲染;

  • 布局——如果你正在设计被多个开发团队使用的系统,需要考虑进行组件化,以及是否需要开发团队通过指定标记来使用组件;

  • 状态管理,例如在单向数据流或双向数据绑定之间做出选择。你还应该考虑你的设计是采用被动式还是反应式编程模型,以及组件如何相互关联,例如是 Foo->Bar 还是 Foo->Bar;

  • 异步——你的组件可能需要与服务器进行实时的通信。在设计时需要考虑使用 XHR 或双向调用。如果你的面试官要求你支持旧浏览器,那么你需要在隐藏 iFrame、script 标签或 XHR 之间做出选择。如果没有,你可以建议使用 websocket,或者使用服务器发送事件(SSE),这样会更好;

  • 关注点分离——Model-View-Controller(MVC)、Model-View-ViewModel(MVVM)和 Model-View-Presenter(MVP)模式;

  • 多设备支持——你的实现是否同时支持 Web、移动 Web 和混合应用程序,还是为每一种场景提供单独的实现?如果你正在构建像 Pinterest 这样的网站,你可能会考虑在 Web 上使用三列,但在移动设备上只使用一列,你的设计将如何处理这个问题;

  • 资产文件交付——在大型应用程序中,独立团队拥有自己的代码库是常有的事。这些不同的代码库可能彼此依赖,每个代码库通常都有自己的管道来发布代码变更。你的设计需要考虑如何基于依赖项进行资产文件的构建(代码拆分)、测试(单元测试和集成测试)和部署。你还需要考虑如何通过 CDN 交付资产文件或者内联它们来减少网络延迟。

Web 性能

除了通用编程最佳实践之外,你应该期望访问者查看你的代码或设计及其性能影响。它曾经足以将 CSS 置于文档的顶部,而 JS 脚本位于页面底部,但 Web 正在快速移动,你应该熟悉这个领域的复杂性。

  • 关键渲染路径;

  • Service Worker;

  • 图像优化;

  • 延迟加载和捆绑拆分;

  • HTTP/2 和服务器推送的一般含义;

  • 何时预取和预加载资源;

  • 减少浏览器回流以及何时将元素提升到 GPU;

  • 浏览器布局、组合和绘制之间的区别。

高频面试知识点


JavaScript

  1. JS原始数据类型有哪些?引用数据类型有哪些?

  2. 说出下面运行的结果,解释原因。

  3. null是对象吗?为什么?

  4. ‘1’.toString()为什么可以调用?

  5. 0.1+0.2为什么不等于0.3?

  6. 什么是BigInt?

  7. 为什么需要BigInt?

  8. 如何创建并使用BigInt?

  9. typeof 是否能正确判断类型?

  10. instanceof能否判断基本数据类型?

  11. 能不能手动实现一下instanceof的功能?

  12. Object.is和===的区别?

  13. [] == ![]结果是什么?为什么

HTTP

  1. HTTP 报文结构是怎样的?

  2. HTTP有哪些请求方法?

  3. 如何理解 URI?

  4. 如何理解 HTTP 状态码?

  5. 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?

  6. 对 Accept 系列字段了解多少?

  7. 对于定长和不定长的数据,HTTP 是怎么传输的?

  8. HTTP 如何处理大文件的传输?

  9. HTTP 中如何处理表单数据的提交?

  10. HTTP1.1 如何解决 HTTP 的队头阻塞问题?

  11. 对 Cookie 了解多少?

TCP协议

  1. 能不能说一说 TCP 和 UDP 的区别?

  2. 说说 TCP 三次握手的过程?

  3. 为什么是三次而不是两次、四次?

  4. 三次握手过程中可以携带数据么?

  5. 同时打开会怎样?

  6. 说说 TCP 四次挥手的过程

  7. 为什么是四次挥手而不是三次?

  8. 同时关闭会怎样?

  9. 说说半连接队列和 SYN Flood 攻击的关系

  10. 如何应对 SYN Flood 攻击?

  11. 介绍一下 TCP 报文头部的字段

  12. 说说 TCP 快速打开的原理(TFO)

浏览器

  1. 能不能说一说浏览器缓存?

  2. 能不能说一说浏览器的本地存储?各自优劣如何?

最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  1. 能不能说一说浏览器的本地存储?各自优劣如何?

最后

[外链图片转存中…(img-aivo5uGD-1715892994170)]

[外链图片转存中…(img-5yQUkT9r-1715892994171)]

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值