前端面试

题目

JS和TS区别

  1. 类型

JS:动态类型,变量类型在运行时确定,无需显示声明类型。

TS:静态类型,支持类型注解和编译时类型检查,可提前发现错误。

  1. 编译与运行

JS:直接由浏览器或者node.js,无需编译

TS:需要通过编译器(tsc)转换为JS代码后才能运行。

  1. 语法扩展

JS:仅支持基础的ECMAScript语法

TS:JS的超集合,新增了接口,枚举,泛型等特性,支持面向对象编程。

  1. 工具支持

JS:工具支持较弱类型,类型相关错误需要运行时才能发现。

TS:提供更强大的IDE智能提示,代码补全和重构功能。

vue2和vue3区别

  1. 响应式系统

Vue2:数据劫持Object.defineProperty实现响应式,需递归遍历对象

Vue3:Proxy代理对象,动态属性监听且性能更优化

ES6 中 let/const 与 var 的区别,以及箭头函数的特点

let/const vs var:

作用域: let/const 是块级作用域,var 是函数作用域

变量提升: var会提升变量,let/const不会(有暂时性死区)

重复声明: var允许重复声明,let/const不允许

const声明必须初始化且不能重新赋值(对象属性可修改)

箭头函数:

语法更简洁

没有自己的this,继承外层this值

不能作为构造函数使用(new)

没有arguments对象,可用rest参数替代

HTTP状态码分类及常见示例

‌4xx(客户端错误)‌。

表示请求包含错误或无法完成:

400 Bad Request:请求语法错误。‌‌

403 Forbidden:服务器拒绝访问。‌‌

404 Not Found:资源不存在。

5xx(服务器错误)‌。

表示服务器处理请求时出错:

500 Internal Server Error:服务器内部错误。‌‌

503 Service Unavailable:服务暂时不可用(如过载维护)。

uniapp页面级生命周期

‌onLoad‌:页面首次加载时触发,接收上一页传递的参数。‌‌

‌onShow‌:页面每次显示时触发(包括返回操作)。‌‌

‌onReady‌:页面初次渲染完成,可操作DOM节点。‌‌

‌onHide‌/‌onUnload‌:页面隐藏或卸载时触发。‌‌

‌onPullDownRefresh‌/‌onReachBottom‌:分别用于下拉刷新和上拉加载更多

Vue混淆模式下,同函数可以调用吗?顺序是?

可以,混淆先执行后执行当前,优先执行mixin后执行当前页面,data会进行合并以当前为最新,如果没有会合并当前data

http和https的区别

‌HTTP‌(超文本传输协议):明文传输数据,无加密,易被窃取或篡改‌

‌HTTPS‌(安全超文本传输协议):在 HTTP 基础上加入 ‌SSL/TLS 加密‌,确保数据安全传输

Vue3 监听 深度监听 立马执行

Deep immediate

mvc和mvvm区别

Model‌:管理数据和业务逻辑

View‌:负责界面展示,被动接收Model数据

Controller‌:处理用户输入,协调Model和View的交互

MVVM

Model‌:与MVC相同,处理数据和业务规则

View‌:仅关注UI展示,通过数据绑定自动更新

ViewModel‌:替代Controller,负责将Model数据转换为View可用的形式,并处理用户交互逻辑

js 检查数组有哪些

isArray

浏览器默认字体大小是16px,1rem=16px

<meta name="viewport" content="width=device-width, initial-scale=1.0">‌

移动端开发遇到的问题有哪些: 界面错乱,功能失效,奔溃闪退

解决方案: 采用响应式设计(Flexbox/Grid布局)‌,进行多设备和多版本测试

性能优化: 页面卡顿和加载缓慢‌,耗电过快‌,大数据量渲染性能差

优化方案 ‌:代码优化(减少DOM操作)‌图片懒加载和压缩,使用虚拟滚动技术处理长列表‌

1px边框在高清屏变粗‌,横竖屏切换布局错乱‌,键盘弹出时页面布局异常

microapp 部署

确保基座应用和子应用都已开发完成并通过测试

准备生产环境服务器配置(推荐Nginx)

确认所有子应用的独立运行能力

配置public-path.js文件

设置跨域头信息

‌‌‌‌‌‌‌‌‌‌