3 15前端面试题目汇总

3 15前端面试题目汇总

下面是我在实习中协助面试 然后在牛客上挑选了一些完整的面试问题借助豆包完成的面经答案思路汇总

个人情况:26届大三,双非一本,目前在陕文投集团(陕西文旅板块)担任后端开发实习岗位。如果你在简历优化、职业方向选择或学习规划上有任何疑问,欢迎随时私信我,我很乐意为你提供帮助!

HTML/CSS基础

1.HTML语义化是什么意思?有什么好处?

o答案:HTML语义化是指使用具有明确语义的HTML标签来构建页面,使页面结构清晰、内容易于理解。好处包括提高可访问性(如屏幕阅读器能更好解析页面)、利于SEO(搜索引擎更易理解页面内容)、便于维护和团队协作等。

2.CSS盒模型包含哪些部分?

o答案:CSS盒模型包括内容(content)、内边距(padding)、边框(border)和外边距(margin)四部分。

CSS布局

3.如何实现网页的居中布局?

o答案:

水平居中:对于块级元素,设置margin-left: auto; margin-right: auto;,并指定宽度;对于行内元素,父容器设置text-align: center;。

垂直居中:可使用Flexbox布局,父容器设置display: flex; justify-content: center; align-items: center;。

4.清除浮动有哪些方法?

o答案:

使用clear: both;的空元素清除法。

父元素设置overflow: hidden;或auto;。

使用:after伪元素清除法,给父元素添加content: ""; display: table; clear: both;。

JavaScript基础

5.JavaScript中的this指向如何确定?

o答案:this指向在函数调用时确定,普通函数调用指向全局对象(浏览器中是window),作为对象方法调用指向该对象,构造函数调用指向新创建的实例,箭头函数则没有自己的this,继承外层函数的this。

6.闭包是什么?有什么作用?

o答案:闭包是能够读取其他函数内部变量的函数。作用包括可以读取函数内部变量,实现数据封装和私有变量,以及保存函数执行时的状态等。

JavaScript高级

7.如何实现数组的去重?

o答案:

使用for循环结合indexOf方法,遍历数组并保留未重复的元素。

使用Set数据结构,let uniqueArray = [...new Set(array)];。

8.Promise的基本使用和状态有哪些?

o答案:Promise是一个对象,用于异步计算。状态包括待定(pending)、已实现(fulfilled)和已拒绝(rejected)。基本使用包括创建Promise实例,通过.then()处理成功情况,.catch()处理错误情况,以及async/await语法糖简化异步代码。

前端框架(如Vue、React)

9.Vue的双向绑定原理是什么?

o答案:Vue通过数据劫持(Object.defineProperty)和发布订阅模式实现双向绑定。数据劫持监听数据变化,发布订阅模式在DOM更新时订阅数据变化事件。

10.React中的虚拟DOM是什么?有什么优势?

o答案:虚拟DOM是React中一种轻量级的JavaScript对象,是对真实DOM的抽象。优势在于减少直接操作DOM的开销,提高渲染性能,以及便于跨平台开发(如React Native)。

性能优化

11.如何优化网页的加载速度?

o答案:

减少HTTP请求,如合并文件、使用CSS Sprites。

压缩资源,如压缩JS、CSS、图片等。

使用浏览器缓存,设置合理的缓存头。

优化代码,避免不必要的渲染和计算。

12.如何优化前端代码的执行性能?

o答案:

避免使用全局变量,减少作用域链查找时间。

使用事件委托优化事件处理。

使用requestAnimationFrame优化动画性能。

对大量数据操作进行分批处理,避免阻塞UI线程。

浏览器相关

13.浏览器的渲染过程是怎样的?

o答案:浏览器接收到HTML后,构建DOM树,同时解析CSS构建CSSOM树,两者结合生成渲染树,然后进行布局(计算每个节点的位置和大小)和绘制(将节点绘制到屏幕上)。

14.如何解决跨域问题?

o答案:

使用JSONP,适用于GET请求。

后端设置CORS(跨域资源共享),允许特定域名的请求。

使用代理服务器转发请求。

工程化与工具

15.前端项目中常用的构建工具有哪些?它们的作用是什么?

o答案:常用构建工具包括Webpack、Gulp、Rollup等。作用包括模块打包、代码压缩、文件合并、热更新等,提高开发效率和代码质量。

16.如何进行前端项目的代码规范管理?

o答案:使用ESLint进行代码风格检查,Prettier进行代码格式化,同时制定团队统一的编码规范文档。

实践与案例

17.描述一个你参与过的前端项目,重点讲讲你遇到的问题和解决方案。

o答案:根据个人项目经历回答,需涵盖项目背景、技术选型、遇到的问题(如性能瓶颈、兼容性问题等)以及对应的解决方案。

18.如何实现一个简单的响应式布局?

o答案:

使用媒体查询(@media)针对不同屏幕宽度设置不同样式。

采用弹性布局(Flexbox)或网格布局(Grid Layout)实现自适应结构。

使用相对单位(如%、rem)代替固定单位。

思维与学习

19.你如何保持对前端技术的学习和更新?

o答案:可通过关注技术博客、参加线上线下活动、参与开源项目、定期学习新技术文档等方式持续学习。

20.描述一次你解决前端难题的经历,包括思路和过程。

o答案:结合实际案例,讲述遇到的问题(如复杂的交互效果、性能优化等),分析问题的原因,尝试多种解决方案,最终找到合适的方法并总结经验。

以下是一份包含详细答案的前端小公司面试题:

HTML/CSS基础

41.什么是 HTML5 的语义化标签?举例说明。

o答案:HTML5 的语义化标签是指那些具有明确语义的标签,如<header>、<nav>、<main>、<footer>等,它们使页面结构更加清晰,有利于SEO和可访问性。

42.CSS3 的新特性有哪些?

o答案:CSS3 引入了许多新特性,包括媒体查询、灵活的盒模型、多列布局、动画和过渡效果、渐变背景等。

CSS布局

43.如何使用 CSS 实现一个响应式图片?

o答案:可以使用max-width: 100%; height: auto;来确保图片在不同屏幕尺寸下自动调整大小。

44.浮动布局和 Flexbox 布局有什么区别?

o答案:浮动布局需要清除浮动,布局较为复杂;Flexbox 布局更灵活,可以轻松实现复杂布局,如对齐、分布空间等。

JavaScript基础

45.JavaScript 中的事件冒泡和事件捕获是什么?

o答案:事件冒泡是指事件从最具体的元素开始,然后逐级向上转播至最外层的节点;事件捕获则是相反,从最外层节点开始,逐级向下传递到目标节点。

46.如何在 JavaScript 中实现一个简单的继承?

o答案:可以通过原型链继承,将子类的原型设置为父类的实例,或者使用Object.create()方法。

JavaScript高级

47.什么是 JavaScript 的异步编程?有哪些实现方式?

o答案:异步编程是指程序在执行过程中,某些操作(如网络请求、文件读取)不会阻塞主线程,而是交由后台处理,处理完成后回调。实现方式包括回调函数、Promise、async/await等。

48.如何避免 JavaScript 中的内存泄漏?

o答案:内存泄漏是指内存中的一些数据被分配出去,但无法被程序再次使用。避免内存泄漏的方法包括及时解除事件监听、清理定时器、避免闭包中保存大对象等。

前端框架(如Vue、React)

49.Vue 和 React 的主要区别是什么?

o答案:Vue 使用模板语法,数据双向绑定,学习曲线较平缓;React 使用 JSX 语法,数据单向绑定,生态较为丰富。

50.在 Vue 中,如何实现组件间的通信?

o答案:可以通过props传递数据,$emit触发事件,使用$refs访问子组件,或者使用 Vuex 进行状态管理。

性能优化

51.如何优化前端项目的首屏加载速度?

o答案:可以使用代码分割,按需加载,减少初始加载的 JavaScript 和 CSS 文件大小,优化图片资源,使用懒加载等技术。

52.如何减少前端项目的网络请求?

o答案:可以通过资源合并,使用 CDN 加速,设置合理的缓存策略,使用 HTTP/2 等方式减少网络请求次数和开销。

浏览器相关

53.浏览器的存储机制有哪些?它们的区别是什么?

o答案:浏览器存储机制包括 Cookie、localStorage、sessionStorage 和 IndexedDB。Cookie 大小有限且会随请求发送,localStorage 和 sessionStorage 提供更大的存储空间且持久保存,IndexedDB 适用于存储大量结构化数据。

54.如何实现浏览器的本地存储?

o答案:可以使用 localStorage 或 sessionStorage,通过setItem()、getItem()、removeItem()等方法进行数据存储和读取。

工程化与工具

55.前端项目的自动化测试有哪些类型?常用的工具是什么?

o答案:自动化测试类型包括单元测试、集成测试和端到端测试。常用工具包括 Jest、Mocha、Cypress 等。

56.如何进行前端项目的持续集成和持续部署(CI/CD)?

o答案:可以使用 Jenkins、GitLab CI、GitHub Actions 等工具,自动化构建、测试和部署流程,确保代码质量和快速迭代。

实践与案例

57.描述一个你参与过的复杂前端项目,重点讲讲你如何进行技术选型和架构设计。

o答案:根据个人项目经历回答,需涵盖项目需求分析、技术选型依据(如性能、团队熟悉度等)、架构设计(如分层架构、模块划分等)。

58.如何实现一个高效的前端表单验证?

o答案:可以使用 HTML5 的表单验证属性,结合 JavaScript 自定义验证逻辑,或者使用表单验证库(如 Vuelidate、Yup 等)。

思维与学习

59.你如何评估和选择一个新的前端技术或框架?

o答案:可通过研究技术文档、查看社区活跃度、评估学习曲线、进行小规模试点项目等方式综合评估。

60.描述一次你与其他团队成员协作解决前端问题的经历,包括沟通和分工。

o答案:结合实际案例,讲述遇到的问题(如跨团队协作的兼容性问题、需求理解差异等),如何通过沟通明确目标,分工解决问题的过程和收获。

时雨h 的实习 面试记录 文章被收录于专栏

时雨h 的实习 面试记录

全部评论

相关推荐

评论
11
39
分享

创作者周榜

更多
牛客网
牛客企业服务