前端面试基础题库——1

目录

 一、什么是闭包?请简单描述一下闭包的特点与应用场景。

二、前端性能优化的方案有哪些?请列出至少三个方案并进行详细描述。

 三、请简述 HTTPS  与 HTTP  的区别,如何保证 HTTPS   的安全性?

四、对于 JavaScript  中 的 let、const 和 var, 它们的作用域和特点分别是什么?

五、请简述对 MVVM   框架的理解

六、请举 一 个闭包的例子说明。 

七、什么是MVC架构模式

八、如何实现 Lazy   Loading?

九、你如何优化网站的性能?

 十、如何解决浏览器兼容性问题?


 一、什么是闭包?请简单描述下闭包的特点与应用场景。

        闭包是指嵌套在函数内部的函数,它可以访问其它函数作用域中的变量,即使这些变量在函数调用结束后仍然存在。

        闭包的特点:

                1.可以访问函数外部的变量

                2.内部函数持有外部函数作用域

                3.可以访问外部函数的参数和局部变量

                4.外部函数返回后,内部函数仍然会持有外部函数作用域

        闭包的应用场景:

                1.封装类库,隐藏内部实现细节

                2.延迟执行,如事件绑定和回调函数

                3.模拟块级作用域,如在循环中创建定时器

                4.作为立即执行函数 (IIFE)使用,防止变量污染全局命名空间

二、前端性能优化的方案有哪些?请列出至少三个方案并进行详细描述。

        前端性能优化的方案有:

                1.减少网络请求:合并JS 和 CSS  文件,使用CSS    Sprites、Iconfont、WebFont 等方式减少图片请求,压缩 JS、CSS、HTML    代码等。

                2.减少资源加载时间:使用CDN   服务,浏览器缓存、服务端缓存、 HTTP  缓存、 LocalStorage 缓存等 技术。

                3.减少页面重绘和重排:减少 DOM  操作、使用 CSS3  动画代替 JS 动画、使用 transform、opacity、 position、overflow 等属性代替 margin 和 padding 等。

 三、请简述 HTTPS  HTTP  的区别,如何保证 HTTPS   的安全性?

        HTTPS(HyperText  Transfer  Protocol  Secure) 是 HTTP  协议的加强版,通过 SSL/TLS  协议对数据进行加密传输,保证通信安全可靠。

        区别如下:

                1.HTTP   通信使用明文传输,安全性较低;HTTPS  使用 SSL/TLS  对数据进行加密传输,安全性高。

                2.HTTP   默认使用80端口, HTTPS   默认使用443端口。

                3.HTTPS   需要使用数字证书,由CA 机构颁发,保证通信双方身份合法性。

        保证 HTTPS  安全性的措施:

                1.TLS 握手过程中使用非对称加密算法 (RSA、DSA、ECC 等)协商对称加密算法和密钥。

                2.证书链验证确保通信双方的身份合法性。

                3.使用快速加密算法,如 AES(Advanced   Encryption   Standard) 等。

                4.cookie 安全性管理,如禁止通过 http 传输,使用 Secure、HttpOnly  属性等。

                5. 开启 HTTP  Strict  Transport  Security(HSTS), 防止中间人攻击,使用 Content Security Policy(CSP)  防止 XSS 和 CSRF  攻击。

四、对于 JavaScript  let、const var, 它们的作用域和特点分别是什么?

        let 和 const的特点:

                1.只在本块级作用域内有效,在块级作用域之外不能访问变量。

                2.同一作用域下不能重复声明。

                3.const 声明的变量一旦声明并赋值之后,不再允许修改。

        var的特点

                1.存在变量提升,可先用后声明,且声明和赋值可以分开来写,变量前使用 typeof 不会报错。

                2.声明会提前至全局作用域或函数作用域的顶部。

                3.在全局作用域中声明变量时,会创建一个全局对象的属性,变量可以通过全局对象来访问。

五、请简述对 MVVM   框架的理解

        MVVM是Model-View-ViewModel的缩写,一种前端框架的思想。在 MVWM架构中,View 和

ViewModel是相互独立的,二者使用数据绑定技术实现数据双向绑定。

        MVVM框架的优点:

                1.双向数据绑定和自动更新视图,减少大量手动操作 DOM的代码。

                2.代码组织清晰,模块化开发,View 和ViewModel分离,方便代码维护和协作开发。

                3.官方和第三方库丰富,提供了大量现成的组件和功能。

        MVVM框架的缺点:

                1.数据绑定会消耗一定的内存和性能,尤其是对于大规模数据更新时,性能消耗更为明显。

                2.需要学习一些新的语法和使用规则。

                3.组件的可定制性较低,需要在框架提供的范围内进行定制。 

六、请举 个闭包的例子说明。 
function outerFunc(){
  var name = 'Jack';
  function innerFunc(){
    console.log(name);
  }
  retun ineFunc;
}
var func = outerFunc();
func();//'Jack'

        在这个例子中, innerFunc() 函数可以访问外部的 name  变量,所以它是一个闭包函数。outerFunc() 函数返回 innerFunc() 函数,把 innerFunc() 函数赋给变量 func, 在调用 func() 时 ,innerFunc() 函数可以访问外部的变量 name, 输出 Jack。

七、什么是MVC架构模式

         MVC(Model  View  Controller) 架构模式是一种将应用程序分解成三个基本部分的方法:

        1.模型(Model)、视图 (View)和控制器 (Controller)。

        2.模型用于表示应用程序的核心数据,视图用于显示数据,控制器用于处理用户交互。

        3.MVC模式使得应用程序的开发和维护更加容易,帮助开发人员更好地管理代码和关注应用程序的核心逻辑。

八、如何实现 Lazy   Loading?

        1.Intersection Observer API

        2.使用图片占位符

        3.利用 data-src 和  data-srcset 属性

        4.使用 JavaScript 在适当的时候插入元素等

        其中, Intersection Observer API是现代浏览器提供的一种用于观察元素是否在视口中的方法,可以实现图片懒加载等功能。

九、你如何优化网站的性能?

        网站性能优化包括减少请求次数、压缩文件、图片优化等方法。具体可以使用CDN 加速、启用浏览器缓存、使用压缩算法对文件压缩等方式。

 十、如何解决浏览器兼容性问题?

        可以使用CSS Hack、JavaScript Polyfill、IE6-8特有的CSS 属性等方法来解决浏览器的兼容性问题。也可以使用CSS 规范、 JavaScript细节的书写来避免出现兼容性问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下次一定L_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值