关于常见的前端架构面试汇总题

1.如果让你来制作一个访问量很高的大型网站,你会如何来管理所有css、js文件、图片?

(1)遵循自定的一套CSS,JS和图片文件和文件夹命名规范

(2)依托采用的前端工程化工具,依照工具脚手架规范 (gulp, webpack, grunt, yeoman)

(3)依据采用的框架规范(Vue, React, jQuery)


2.如果没有框架、怎么搭建你的项目

应用原生JS自己尝试搭建一个MVC架构:

(1) 基本模块

common:公共的一组件,下面的各模块都会用到

config:配置模块,解决框架的配置问题

startup:启动模块,解决框架和Servlet如何进行整合的问题

plugin:插件模块,插件机制的实现,提供IPlugin的抽象实现

routing:路由模块,解决请求路径的解析问题,提供了IRoute的抽象实现和基本实现

controller:控制器模块,解决的是如何产生控制器

model:视图模型模块,解决的是如何绑定方法的参数

action:action模块,解决的是如何调用方法以及方法返回的结果,提供了IActionResult的抽象实现和基本实现

view:视图模块,解决的是各种视图引擎和框架的适配

filter:过滤器模块,解决是执行Action,返回IActionResult前后的AOP功能,提供了IFilter的抽象实现以及基本实现

(2)扩展模块

filters:一些IFilter的实现

results:一些IActionResult的实现

routes:一些IRoute的实现

plugins:一些IPlugin的实现


3.在选择框架的时候要从哪方面入手

影响团队技术选型有很多因素,如技术组成,新技术,新框架,语言及发布等。为了更好的考量不同的因素,需要列出重要的象限,如开发效率、团队喜好,依次来决定哪个框架更适合当前的团队和项目。上线时间影响框架选择,不要盲目替换现有框架。

(1)jQuery

项目功能比较简单。并不需要做成一个单页面应用,就不需要 MV* 框架。项目是一个遗留系统。与其使用其他框架来替换,不如留着以后重写项目。

(2)AngularJS

当我们在制作一个应用,它对性能要求不是很高的时候,那么我们应该选择开发速度更快的技术栈AngularJS,她拥有混合开发能力的ionic框架。对于复杂的前端应用来说,基于 Angular.js 应用的运行效率,仍然有大量地改进空间。Angular2需要学习新的语言,需慎重选择。

(3)React

选择React有两个原因,一是通过Virtual DOM提高运行效率,二是通过组件化提高开发效率。大型项目首选。选择 React 还有一个原因是:React Native、React VR 等等,可以让 React 运行在不同的平台之上。我们还能通过 React 轻松编写出原生应用,还有 VR 应用。

令人遗憾的是 React 只是一个 View 层,它是为了优化 DOM 的操作而诞生的。为了完成一个完整的应用,我们还需要路由库、执行单向流库、web API 调用库、测试库、依赖管理库等等,为了完整搭建出一个完整的 React 项目,我们还需要做大量的额外工作。

(4)Vue.js

对于使用 Vue.js 的开发者来说,我们仍然可以使用 熟悉的 HTML 和 CSS 来编写代码。并且,Vue.js 也使用了 Virtual DOM、Reactive 及组件化的思想,可以让我们集中精力于编写应用,而不是应用的性能。

对于没有 Angular 和 React 经验的团队,并且规模不大的前端项目来说,Vue.js 是一个非常好的选择。



4.聊一聊前端模板与渲染

(1)页面级的渲染,后端模板

如smarty,这种方式的特点是展示数据快,直接后端拼装好数据与模板,展现到用户面前,对SEO友好。

(2)异步的请求与新增模板,前端模板

如Mustache,ArtTemplate,前端解析模板的引擎的语法,与后端解析模板引擎语法一致。这样就达到了一份HTML前后端一起使用的效果。


来源:千锋HTML5

以下是一些可能会在2023年前端面试中出现的目: 1. 什么是闭包?如何使用闭包解决作用域? 2. 解释一下 JavaScript 中的继承,有哪些实现继承的方法? 3. 解释一下 JavaScript 中的事件循环机制(Event Loop),以及它与异步编程的关系。 4. 如何优化网页的性能?包括什么方面? 5. 解释一下 Vue.js 中的双向数据绑定原理,它是如何实现的? 6. 解释一下 React 中的虚拟 DOM 是什么,以及它的优点和缺点是什么? 7. 解释一下 CSS 中盒模型的概念,包括 content、padding、border 和 margin。 8. 解释一下 CSS 中 Flexbox 布局的概念,以及如何使用它进行布局。 9. 解释一下 CSS 中 Grid 布局的概念,以及如何使用它进行布局。 10. 解释一下 Webpack 的概念和作用,以及如何使用它进行模块打包。 11. 解释一下 HTTPS 的概念和原理,以及它与 HTTP 的区别。 12. 解释一下 Web 应用程序的安全,包括 XSS 和 CSRF 攻击。 13. 解释一下前端工程化的概念和作用,以及常用的前端工程化工具。 14. 解释一下 Node.js 的概念和作用,以及如何使用它进行后端开发。 15. 解释一下 TypeScript 的概念和作用,以及如何使用它进行编程。 16. 解释一下 WebAssembly 的概念和作用,以及它与 JavaScript 的区别。 17. 解释一下 PWA 的概念和作用,以及如何开发一个 PWA 应用程序。 18. 解释一下 GraphQL 的概念和作用,以及如何使用它进行后端开发。 19. 解释一下微前端的概念和作用,以及如何使用它进行前端架构设计。 20. 解释一下 Serverless 的概念和作用,以及如何使用它进行后端开发。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值