【部分】前端八股,希望有所帮助

进程和线程的区别

进程是系统进行资源分配和调度的基本单位。线程是程序执行的最小单位。一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

TCP的三次握手和四次挥手

为什么是三次而不是两次或者四次:如果是两次,服务端不知道客户端是否具有接收消息的能力(还有网络阻塞的考量,两次握手会造成资源浪费)。如果是四次显然是浪费资源。综上所述,三次握手是用最小的代价确定客户端和服务端同时具有发送和接收数据的能力。

四次挥手:是为了应付服务端可能还有数据需要发送给客户端这种情境。故而将服务端的ackfin分开发送

cssjs会阻塞HTML吗(js放在bodyhead的区别)

css不阻塞dom的解析,js阻塞dom的解析。cssjs都会阻塞dom的渲染。


闭包及用途:闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式就是在一个函数内部定义另一个函数。可以借助闭包从外部读取函数内的某个私有变量它的典型应用是定义模块(对象)时作为私有函数暴露给外部。但是它会增加内存负担(变量将始终保存在内存中)。


跨域的方法

l   前端:使用jsonp(利用script标签不受限制的从其它域加载资源的特性),iframe(location.href)。这两种方法都存在较高的安全风险(恶意代码注入)

l   后端: 配置CORS允许跨域Access-Control-Allow-Origin;前端框架的proxy代理webpack会在本地创建一个web服务器,该服务器和客户端同源。它作为中间层帮助客户端去向服务端请求数据);nginx的方向代理

l   Websocket

浅拷贝与深拷贝:前者仅仅是复制指向原对象的指针,新旧对象共享内存。后者是开辟一个新的存储空间存放数据。修改新对象旧对象不受影响。


谈谈js的垃圾回收

js引擎会跟踪每个值被引用的次数,然后会定期释放哪些引用次数为0的值所占的内存。将一个变量设为null,可以尽快回收释放其内存。


如何实现浏览器响应式布局

l   使用flex弹性布局

l   使用媒体查询(@media

l   使用百分比单位

l   使用REM单位

l   使用VWVH单位


什么是单页面应用

就是指一个系统只加载一次资源,之后的操作交互、数据交互是通过路由、ajax来进行,页面并没有刷新

优点

1.    加载次数少,加载以后性能较高

2.    前后端分离,前端负责界面显示,后端负责数据存储和计算

3.    良好的交互体验

缺点

1.    不利于SEO优化

2.    单页面不能使用浏览器的前进后退,页面切换要自己建立堆栈管理

3.    首次加载耗时比较长


vue父子组件(兄弟组件)传值

1.      子组件通过props属性接收父组件的数据(向下传递)。然后父组件在子组件上绑定自定义事件,子组件通过emit触发该事件来向父组件传递数据(向上传递)。

2.      通过ref属性给子组件设置一个名字,父组件通过$refs组件名来获取子组件。子组件则可通过$parent调用父组件。

3.      兄弟组件间通讯,通常使用vuex,也可借助事件总线(新建一个空的vue实例,不过官网最新的教程已经删除了)。


nextTick的理解:

下次DOM更新循环结束后执行延迟回调。简单的理解就是DOM更新完成后执行回调函数。因为vue采用的是异步渲染—Vue实现响应性并不是数据变更后DOM立即变化,而是按照一定的策略进行DOM的更新。


介绍一下虚拟dom

虚拟domvuereact都用到的一种技术。虚拟DOM是对真实DOM的一种抽象,会根据DOM标签的名字、属性、孩子对真实DOM进行映射。使用虚拟DOM的原因是,真实DOM进行更新时的过程很笨拙,虚拟DOM配合diff算法,可以很轻便的进行DOM的操作。提高渲染性能。


v-ifv-show的区别v-show其实是控制css样式的display属性,v-if则是根据表达式的值销毁或者创建dom节点。


v-ifv-for可以同时使用吗

不建议一起使用。v-forv-if优先级更高。所以使用的话,每次v-for都会执行v-if,造成不必要的计算,影响性能。


$route$router的区别

route是路由信息对象,里面主要包含路由的一些基本信息,包括name,path,params等;

router是VueRouter的实例,包含一些路由的跳转方法,钩子函数等。

computedwatch的区别

computed主要是存储一些需要数据处理的值,其实和data比较像,可以理解为在data 的基础上做一些额外的数据处理操作,并且返回一个新的变量。

watch主要用于监听数据的变化,监听的来源有propsdatacomputed。接收两个参数...

keep-alive的作用

keep-alive是vue的内置组件。当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。。主要作用是防止重复渲染DOM,减少加载时间及性能消耗,提供用户体验性。


flex布局

一、容器的属性

flex-direction:定义主轴方向,默认是row,即水平方向(起点在左端)。
flex-wrap:如果一条轴线排不下,定义如何换行。
justify-content:定义了项目在主轴上的对齐方式。
align-items:定义项目在交叉轴上的对齐方式。
align-content:定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用(也就是flex容器中的子项不止一行时该属性才有效果)。

flex-grow:定义子项的放大比例,默认为0,即如果存在剩余空间,也不占满。如果所有子项的flex-grow属性都为1,则它们等分剩余空间(如果有的话)。如果一个子项的flex-grow属性设为2,其余为1,则前者占据的剩余空间将比其它子项多一倍。
flex-shrink:定义了子项的缩小比例,默认为1,即如果空间不足,该子项将自动缩小。如果所有子项的flex-shrink 的属性都为1,当空间不足时,都将等比例缩小。如果一个子项的flex-shrink的属性为0,其余为1,则空间不足时,前者不缩小。
flex-basis:定义在分配多余空间之前,子项占据的主轴空间。浏览器根据这个属性,计算主轴是否有多余空间。它的优先级比widh/height更高,默认值为auto,即项目本来大小。flex:是flex-grow,flex-shrink和flex-basis的混合简写形式。下面是几种预定义的值:flex: initial、flex: auto、flex: none、flex: <positive-number>align-self:允许单个子项有与其它兄弟子项不一样的对齐方式

#前端面经#
全部评论
厉害了,感谢大神分享
1 回复 分享
发布于 2022-08-18 16:56 江苏
全部背下来 有机会获得offer吗
1 回复 分享
发布于 2022-08-24 11:32 山东
很有帮助,求更新
1 回复 分享
发布于 2022-09-12 18:18 江苏
谢谢大佬
点赞 回复 分享
发布于 2022-09-21 16:26 浙江

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
评论
31
206
分享
牛客网
牛客企业服务