前端学科面试题大全

作用域和值类型引用类型的传递

(变量作用域(作用域变量访问区域,变量值存在栈中,变量赋值相当于值赋值,)&值传递与引用传递有哪些区别(函数内部,变量会先声明,形式参数变量声明提升,整个函数体有var声明的变量,如果没有访问全局定义的num2)&函数作用域和块作用域(JS作用域分为函数作用域与全局作用域,访问全局的num1没有修改过还是55,num2访问全局的为100,全局如果没有声明num会报错)&提升 &console.log方法)

(以工厂函数取代构造函数(声明变量,通过构造函数创建对象,对象创建其中一种就是构造函数创建对象)&对象去哪儿:辨清Java堆(通过构造函数创建对象,变量存放对象在堆内存的地址,栈中存放地址与堆进行关联,)&了解形式参数和实际参数(两个变量person和p都指向同一个堆内存地址,)&不存在变量提升&使用new关键字调用构造器创建对象(new会在堆内存重新创建对象,会重新开辟一个空间,形成新的一个空间,person指向新的空间,与p没有关系))

封装函数进行字符串驼峰命名转换

(用驼峰法命名属性(split根据横向切割,每一次拿到不同元素再做拼接转换,每一次重新复制给自己的元素对应的索引)&)

冒泡排序

(冒泡排序(一轮比较中找到该数组中的最大值,最后一轮只用比较1次,比较轮数当前数组长度减1,外循环控制轮数,内循环每一轮进行比较次数arr.length-1-i,)&)

 

反转数组

 

(用数组反转字符串(交换次数元素个数的一般,第一个和最后一个交换,第二个元素和倒数第二个元素交换, 1 arr.length-1-i )&)

去掉数组中重复性数据

(访问数组&length属性与length()方法有什么区别(定义一个新数组,只有一个元素为第一个元素,遍历原数组与新数组比较如果相同不插入,) &break和continue语句&插入数据)

物理像素

flex元素水平垂直剧中哦

css实现三角形

rem适配

背景图片距离

js综合面试题

函数提升(变量与函数会整体提升,变量提升只是声明提升默认undefined与函数提升是整体提升,如果变量与函数名称冲突,保留函数忽略变量,Foo().getName()运算符优先级关系,点运算符优先级最高,先执行Foo()函数,getName()没有var定义按照作用域链找,在全局找并将全局getName改变为函数内部的方法 )&变量提升&继承和prototype&表达式语法之运算符(点优先级最高,Foo()括号不能点调用,先求出括号值再去点调用,实例对象按照隐式原型_proto_找对应的属性,如果找不到prototype最后去Object的隐式原型属性找,如果找不到返回undefined。自身属性没有定义属性,实例对象隐式原型属性指向构造函数显示原型属性Foo.prototype.getName,找到对应的getName方法)& let取代var &延长作用域链&this和对象原型&优先级&类的实例对象(this指向当前调用函数的对象,直接调用是window.this找)&原生构造函数的继承

函数节流与防抖

(函数节流(函数节流一个函数执行一次后,只有大于设定的执行周期才会执行第二次,对于频繁触发的函数对性能不太好,规定时间内只让函数触发的第一次生效,后面不生效)&闭包(函数内返回一个函数,通过闭包的方式lastTime一直记录是上一次的时间,不会每次初始化都是0)&动画回调函数&使用apply或call实现伪继承(this指向问题,fn.call(this)将当前函数的this传入到fn中,修正this指向问题)&抖动(防抖函数,一个需要频繁触发的函数在规定的时间内,只让最后一次生效,前面不生效)&setTimeout& let取代var(记录上一次定时器,每一次timer初始化为null记录不了,要return function(){ }定义闭包同时修正this指向问题,)&for、let和return子句

跨域

(协议解析&什么是跨域&JSONP&实现跨域之CORS (同源策略,浏览器安全策略保证浏览器可以安全运行的策略,要求网络中的协议名域名好端口号必须完全一致,违背同源策略就会产生跨域。不同服务器提供不同功能,多台服务器对应域名都不一样,可以通过JSONP和CORS解决跨域问题。JSONP利用script标签天然跨域的特性,请求将参数传递过去,请求成功自动调用getData函数执行逻辑处理接收的数据)&创建标签文件用作HTML模板&JavaScript概述&Body元素

nodejs时间轮询机制

(轮询(三者执行顺序,三个都是立即执行函数,执行顺序与函数位置没关系。首先检查定时器是否到点,没有到点往下走知道poll阶段,把回调函数从轮询队列中取出来依次执行,执行到为空判断是否设置setImediate函数,如果设置则执行该函数,轮询机制相当于死循环无限循环,如果没有设置会在poll阶段一直停留知道轮询队列添加新的对象继续执行。如果定时器到点了也会到达check阶段。Process.nextTick能在任意阶段优先执行)&)

从url输入网址

(自定义DNS和上游DNS服务器(从一个url地址到网页渲染完成,一共分为6个部分,首先进行DNS解析,将域名解析为IP地址,先读取浏览器DNS缓存,如果有使用,如果没有去系统计算机DNS缓存读取找到ip地址,还没有会去路由器查看,之后去网络运营商DNS缓存查看,还找不到最后会去递归搜索blog.baidu.com先去com域名下查找对应DNS解析,之后去.百度下查找,最后去blog查找。获取ip地址与服务器交互,通过TCP连接的三次握手实现,第一次握手浏览器发起告诉服务器将要发送请求,第二次握手服务器发起告诉浏览器准备接收,第三次握手由浏览器发送告诉服务器接收。第三步建立连接后发送请求HTTP请求报文,第四部接收服务器响应报文,第五部浏览器根据响应报文渲染页面调用HTML解析器解析成Token标记并构建成dom树,遇见css/style构建cssom树,遇见script标签,处理script代码,将dom树和cssom树合并成一个渲染树,根据渲染树计算布局,最后渲染布局。第六步TCP四次挥手,第一次浏览器发送给服务器请求报文发送完毕准备关闭,第二次服务器发起告诉浏览器东西(请求报文)接收完毕准备关闭,第三次服务器发起告诉浏览器东西(响应报文)发送完毕准备关闭,第四次浏览器发起东西(响应报文)接收完毕准备关闭)&减少TCP连接&)

闭包

(将配置文件存放于src路径(set,map es6提出的,变量对象,Global全局变量对象相当于window,local函数内局部变量对象,执行完毕作用域销毁释放内存里面闭包也会被销毁。内部函数返回到外部,延长生命周期,fun2()还能拿到变量。只传递一个实参,第一次是undefined,a.fun(1)对象调用fun是调用内部的fun不是外部的fun,传值给m每次console.log(n)调用的n衡为0。fun(0).fun(1)前面整体是一个对象,不是一个对象,存的闭包也不是同一个闭包)&闭包&将局部变量的作用域最小化&匿名函数&何为生命周期& 内存溢出与内存泄漏&函数的实参和形参& 作用域&匿名函数和闭包

变量提升&执行上下文

(变量提升&什么是搜索引擎&表达式预处理&使用上下文初始化参数(作用域是在代码定义时产生,执行上下文是代码正式执行之前会进入执行环境,全局变量对象window,局部变量对象)&作用域和闭包&this和对象原型(this指向对象,构造函数要new出实例对象)&延长作用域链(作用域链式函数某一个执行环境加上外层嵌套的作用域,外层作用域有关联就会形成作用域链,变量在当前作用域找没有找到会沿着作用域链沿着外层作用域找,直到找到全局,指向上下文EC可以看做是一个大的对象,包含了scopeChain和变量对象(变量对象和函数形参))&单线程&为什么要异步&使用回调&事件机制&虚拟DOM钩子函数&setInterval&原生代码实现Promise机制&process.nextTick()&宏观关联&微优化&3 Promise.prototype.then()&可用的LocaleResolver  )

宏任务与微任务

(向线程池提交任务(JS是单线程的,js代码都是在主线程上执行,有同步执行与异步执行之分,异步执行有回调函数,定时器,ajax和点击事件,回调执行时机取决于将回调函数放在eq事件队列里的先后顺序,JS引擎会以轮询eq是否有可执行的回调,如果有会将回调勾出去到主线程执行。requestAnimationFrame告诉浏览器将要在下一次动画之前调用回调函数,都是异步任务又属于宏任务,微任务放到微任务事件队列里的任务,JS主线程代码要执行是相当于启动了第一个宏任务。Resolve()肯定会执行第一个then回调,Promise属于同步任务new的同时执行里面的for循环相当于主线程任务)&)

小程序快速入门

(小程序实战(小程序是很轻量级的程序,无需下载,不能大于2M,大于2M要分包,小程序变动比较快。微信web开发者工具,project.config.json对整个项目的描述一般不会进行修改,wxss样式文件,app.js行为文件整个应用的逻辑,app.json是配置文件,wex.wxml相当于html。App.js onLaunch整个应用生命周期,点击跳转页面对应logs,主页面index。小程序是组件化开发,有自己完善的组件,小程序结构名与样式名必须一致才能找的到。App是注册这个应用,Page注册当前页面,初始化项目。小程序通过bindtap或者catchtap定义事件,小程序做到了完美适配不需要做不同机型的适配,VPX)&)

小程序和mpVue对比

(Vue.js 权威指南(mpVue是小程序的Vue框架,支持npm install下载包,会以vue组件开发的方式开发小程序,可以使用vue-router路由组件)&)

比较React和Vue

(Vue与React(都是组件化开发,提高编码风格,虚拟Dom,提高程序运行效率。数据驱动只要更新状态数据对应界面自动发生变化,不用直接操作Dom,react只支持内存数据到界面变化,不支持界面到到内存数据变化。React必须通过setState统一入口更新状态,vue只要通过this.xxx更新data值里面某个值,状态数据就会发生变化。)&)

Redux管理状态的机制

(Redux的基本原则(并不是react插件库,redux有store模块管理state状态是组件与状态之间桥梁,reducers根据老状态生成新状态,生成action对象模块action Creator。getState读状态,立马调用reducers获取初始状态,利用action creator产生action对象)&)

Vue组件间的通信方式

(组件通信(props兄组件必须借助父组件才能通信。在父组件里写子组件标签时绑定自定义事件监听指定回调函数,子组件触发分发事件,数据data就会从子组件传递给父组件。Subscribe订阅消息指定消息名和回调函数,发布消息时指定消息名以及传递的数据data,传递给回调函数。Slot通信的是标签,)&)

Vuex管理状态机制

(状态管理与Vuex(state,getters计算数据,读取状态数据或者通过映射函数map读取数据,更新状态数据通过actions,mutations更新,actions可以通过ajax请求与后台通信backend API双向,开发工具会监视mutations的调用记录状态的变化)&)

Vue的MVVM实现原理

(MVVM族员——Vue.js(初始化实现初始化显示为更新做了准备(实现数据劫持创建对应的watcher和dep),通过模板动态显示数据,数据绑定来实现更新数据界面会自动变化。New MVVM()实现数据代理、模板解析和数据绑定,observer先创建为了能监视/劫持data中所有层次的属性,同时为每一个属性创建了dep对象。创建watcher对象,并把watcher放到dep中,deps中有subs订阅者列表,后面通过watcher订阅者来更新。点击更新按钮会通过observer对应的set获取,调用某个属性对应的dep,通过watcher来调用回调函数更新界面) &

)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wespten

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

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

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

打赏作者

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

抵扣说明:

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

余额充值