js面试题 PPT课件
- 格式:ppt
- 大小:1.62 MB
- 文档页数:19
送你43道JS⾯试题(收藏)导读这两天的GitHub Trending repositories被⼀个名叫 javascript-questions的项⽬霸榜了,项⽬中记录了⼀些JavaScript题⽬。
我⼤概从头到尾看了⼀遍,都是⼀些基础的题⽬,我⼤概花了半个⼩时(有些题很简单,可以⼀扫⽽过)把这些题做完了,虽然题⽬很简单,但是每道题都对应⼀个知识点,如果这个知识点你没有接触过,那肯定会做错,如果你接触过这些知识点,那么这些题对你来说就很容易。
建议⼤家也花半个⼩时来做⼀做,以便查漏补缺。
为⽅便⼤家能够更快的做题,⽽不把时间浪费在翻译上,我⼜花了⼏个⼩时把它们翻译成了中⽂,当然已经获得了作者授权。
⽂中有些点作者解释的不太完整,为了更好的理解,我在⽂中添加了⼀些个⼈解释。
JavaScript 进阶问题列表我在我的Instagram上发布了每⽇JavaScript选择题,我也会在这⾥发布!从基础到⾼级:测试您对JavaScript的了解程度,刷新您的知识,或为您的编码⾯试做好准备! 我每周⽤新问题更新这个项⽬。
答案位于问题下⽅的折叠部分,只需单击它们即可展开。
祝你好运❤1. 下⾯代码的输出是什么?function sayHi() {console.log(name);console.log(age);var name = "Lydia";let age = 21;}sayHi();A: Lydia 和 undefinedB: Lydia 和 ReferenceErrorC: ReferenceError 和 21D: undefined 和 ReferenceError答案: D在函数中,我们⾸先使⽤var关键字声明了name变量。
这意味着变量在创建阶段会被提升(JavaScript会在创建变量创建阶段为其分配内存空间),默认值为undefined,直到我们实际执⾏到使⽤该变量的⾏。
深入浅出JavaScript引言:JavaScript是一种广泛应用于Web开发的编程语言,它为网页带来了动态效果和交互性。
本课件旨在为您提供关于JavaScript的全面概述,包括其基本概念、语法、功能和应用场景。
通过本课件的讲解,您将能够理解JavaScript的工作原理,并能够运用它来创建更加丰富和互动的Web体验。
第一部分:JavaScript概述1.1JavaScript的历史和发展1.2JavaScript的主要特点和优势1.3JavaScript在Web开发中的应用场景第二部分:JavaScript基础语法2.1变量和数据类型2.2运算符和表达式2.3控制语句和循环语句2.4函数的定义和调用第三部分:JavaScript对象和数组3.1对象的基本概念和创建方式3.2数组的基本概念和操作方法3.3内置对象和全局对象第四部分:JavaScript高级特性4.1闭包的概念和应用4.2原型链和继承4.3异步编程和回调函数4.4事件处理和事件委托第五部分:JavaScript与DOM操作5.1DOM的基本概念和结构5.2DOM的查询和操作方法5.3事件冒泡和事件捕获5.4AJAX和动态数据加载第六部分:JavaScript框架和库6.1jQuery的基本使用和优势6.2React的基本概念和组件化开发6.3Vue.js的基本概念和双向数据绑定6.4Angular的基本概念和依赖注入第七部分:JavaScript最佳实践和性能优化7.1代码规范和命名约定7.2代码压缩和合并7.3异步加载和懒加载7.4优化DOM操作和事件处理第八部分:JavaScript安全性和错误处理8.1JavaScript的安全性问题8.2错误处理和异常捕获8.3跨域请求和安全措施结论:通过本课件的学习,您已经了解了JavaScript的基本概念、语法和功能,并能够运用它来创建动态和交互式的Web页面。
JavaScript作为一种灵活和强大的编程语言,将继续在Web开发中发挥重要作用。
⼤部分⼈都会做错的经典JS闭包⾯试题由⼯作中演变⽽来的⾯试题这是⼀个我⼯作当中的遇到的⼀个问题,似乎很有趣,就当做了⼀道题去⾯试,发现⼏乎没⼈能全部答对并说出原因,遂拿出来聊⼀聊吧。
先看题⽬代码:function fun(n,o) {console.log(o)return {fun:function(m){return fun(m,n);}};}var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?//问:三⾏a,b,c的输出分别是什么?这是⼀道⾮常典型的JS闭包问题。
其中嵌套了三层fun函数,搞清楚每层fun的函数是那个fun函数尤为重要。
可以先在纸上或其他地⽅写下你认为的结果,然后展开看看正确答案是什么?//答案://a: undefined,0,0,0//b: undefined,0,1,2//c: undefined,0,1,1答案都答对了么?如果都答对了恭喜你在js闭包问题当中⼏乎没什么可以难住你了;如果没有答对,继续往下分析。
JS中有⼏种函数⾸先,在此之前需要了解的是,在JS中函数可以分为两种,具名函数(命名函数)和匿名函数。
区分这两种函数的⽅法⾮常简单,可以通过输出来判断,有name的就是具名函数,没有name的就是匿名函数注意:在低版本IE上⽆法获取具名函数的name,会返回undefined,建议在⽕狐或是⾕歌浏览器上测试或是采⽤兼容IE的获取函数name⽅法来获取函数名称:/*** 获取指定函数的函数名称(⽤于兼容IE)* @param {Function} fun 任意函数*/function getFunctionName(fun) {if ( !== undefined)return ;var ret = fun.toString();ret = ret.substr('function '.length);ret = ret.substr(0, ret.indexOf('('));return ret;}遂⽤上述函数测试是否为匿名函数:可以得知变量fn1是具名函数,fn2是匿名函数创建函数的⼏种⽅式说完函数的类型,还需要了解JS中创建函数都有⼏种创建⽅法。
nextjs面试题1.1. Vue.js 的特点1.2. Vue.js 双向绑定的原理1.3. Vue.js 3.0 放弃defineProperty, 使用Proxy的原因1.4. Vue 2 中给 data 中的对象属性添加一个新的属性时会发生什么?如何解决?1.5. Computed和Watch的区别1.6. Computed 和 Methods 的区别1.7. 虚拟DOM,diff算法1.8. 为何需要Virtual DOM?1.9. 过滤器 (Filter)1.10. 常见的事件修饰符及其作用1.11. v-show指令和v-if指令的区别是什么?1.12. v-model 是如何实现的,语法糖实际是什么1.13. data为什么是一个函数而不是对象1.14. Vue template 到 render 的过程1.15. Vue data 中某一个属性的值发生改变后,视图会立即同步执行重新渲染吗?1.16. axios是什么1.17. sass是什么?如何在vue中安装和使用?1.18. Vue.js页面闪烁1.19. 如何解决数据层级结构太深的问题1.20. 在 Vue. js开发环境下调用API接口,如何避免跨域1.21. 批量异步更新策略1.22. vue 的 nextTick 方法的实现原理1.23. Vue 组件 data 为什么必须是函数 ?1.24. v-if和v-for一起使用的弊端及解决办法1.25. vue常用指令1.26. 组件传值方式有哪些1.27. vue-loader是什么?使用它的用途有哪些?2. 组件 Component2.1. vue中如何编写可复用的组件(编写组件的原则)2.2. 如何让CSS只在当前组件中起作用?2.3. keep-alive是什么?2.4. 如何在 Vue. js动态插入图片2.5. 父子组件的生命周期顺序3. Vuex3.1. vuex的核心概念3.2. vuex是什么?怎么使用?哪种功能场景使用它?3.3. 多个组件之间如何拆分各自的state,每块小的组件有自己的状态,它们之间还有一些公共的状态需要维护,如何思考这块4. Router4.1. vue-router路由的两种模式4.2. vue-router如何定义嵌套路由4.3. vue-router有哪几种导航钩子?4.4. $route和$router的区别4.5. 路由之间跳转的方式4.6. active-class是哪个组件的属性易用:简单,易学,上手快灵活:(渐进式)不断繁荣的生态系统,可以在一个库和一套完整框架之间自如伸缩。
js工程师面试题及答案HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性;2.xhtml和html有什么区别HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同:XHTML 元素必须被正确地嵌套。
XHTML 元素必须被关闭。
标签名必须用小写字母。
XHTML 文档必须拥有根元素。
3.Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? 用于声明文档使用那种规范(html/Xhtml)一般为严格过度基于框架的html文档加入XMl声明可触发,解析方式更改为IE5.5 拥有IE5.5的bug4.行内元素有哪些?块级元素有哪些?CSS的盒模型?块级元素:div p h1 h2 h3 h4 form ul行内元素: a b br i span input select Css盒模型:内容,border ,margin,padding5.CSS引入的方式有哪些? link和@import的区别是?内联内嵌外链导入区别:同时加载前者无兼容性,后者CSS2.1以下浏览器不支持 Link 支持使用javascript改变样式,后者不可。
6.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?标签选择符类选择符 id选择符继承不如指定 Id>class>标签选择后者优先级高7.前端页面有哪三层构成,分别是什么?作用是什么?结构层Html 表示层 CSS 行为层 js8.css的基本语句构成是?选择器{属性1:值1;属性2:值2;……}9.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?Ie(Ie内核) 火狐(Gecko)谷歌(webkit) opear(Presto)10.写出几种IE6 BUG的解决方法1.双边距BUG float引起的使用display2.3像素问题使用float引起的使用dislpay:inline -3px3.超链接hover 点击后失效使用正确的书写顺序 linkvisited hover active4.Ie z-index问题给父级添加position:relative5.Png 透明使用js代码改6.Min-height 最小高度!Important 解决’7.select 在ie6下遮盖使用iframe嵌套8.为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)11.标签上title与alt属性的区别是什么?Alt 当图片不显示是用文字代表。
js基础知识点及⾯试题(⼀)⼀、数据类型1.原始类型有哪⼏种?答:原始类型有boolean、null、undefined、number、string、symbol原始类型存储的都是值,是没有函数可以调⽤的、⽐如undefined.toString(),当例如'1'.toString()可以调⽤,是因为此时被强制转换成了 String 类型也就是对象类型,所以可以调⽤ toString 函数。
2.在js中答:因为浮点数运算的精度问题,计算机只认识⼆进制,在进⾏运算时,需要将其他进制的数值转换成⼆进制,然后再进⾏计算。
// 将0.1转换成⼆进制console.log(0.1.toString(2)); // 0.0001100110011001100110011001100110011001100110011001101// 将0.2转换成⼆进制console.log(0.2.toString(2)); // 0.001100110011001100110011001100110011001100110011001101所以两者相加后,因浮点数⼩数位的限制⽽截断的⼆进制数字,再转换为⼗进制,就成了0.30000000000000004console.log(0.1+0.2); // 0.30000000000000004解决办法parseFloat((0.1 + 0.2).toFixed(10)) === 0.3 // true3.null是对象吗答:null不是对象,虽然typeof null会输出object,但这是js⼀个悠久的bug。
null表⽰准备⽤来保存对象,还没有真正保存对象的值。
从逻辑⾓度看,null值表⽰⼀个空对象指针.console.log(null==undefined) //true4.对象类型原始类型以外的对象类型,原始类型存储的是值,对象类型存储的是地址(指针)。
目录JavaScript面试宝典 (2)1 原生JS部分 (2)2 ajax&http (19)3 vue相关 (27)4 react相关 (39)5 项目相关 (50)培训前端面试题精选原生JS1.ES6的新特性:let(声明变量)const(声明常量,常量不能修改的量)var、let、const的区别1. let和const声明变量不存在变量提升,如果要使用这个变量,我们需要在变量定义之后使用;2. let和const不能重复声明变量,如果重复声明会报错;3. 用let 和 const 在全局声明变量不会给window增加属性;4. let和const出现在代码块中,会把代码块(字面量声明对象除外)变成块级作用域,并且出现暂时性死区class(创建类)import/export(基于ES6的模块规范创建导入/导出模块(文件/组件))new set(数组去重)Symbol(唯一的值) var a = Symbol('qqq')...ary(展开运算符、剩余运算符)${}模板字符串解构赋值 let {a} = obj; let [b] = aryfor of 循环()=>{} 箭头函数箭头函数与普通函数的区别:1. 箭头函数是匿名函数,不能作为构造函数,不能使用new2. 箭头函数没有原型属性3.this指向不同,箭头函数的this是定义时所在的对象,普通函数看前面有没有.,点前面是谁this 就是谁,没有.就是window4. 不可以使用arguments对象,该对象在函数体内不存在。
数组新增方法:flat、find、findIndex对象新增方法:Object.assign() Object.values() Object.keys() Object.create()...2.JS的数据类型基本数据类型: number 数字; boolean 布尔值 :有两个值 true、false ;string 字符串null 空对象; undefined 未定义的值(很多浏览器的初始值是undefined)Symbol() 产生一个唯一的值,和谁都不重复null和undefined的区别:null是一个表示"无"的对象,转为数值时为0undefined是一个表示"无"的原始值,转为数值时为NaN当声明的变量还未被初始化时,变量的默认值为undefinednull用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象undefined表示“缺少值”,就是此处应该有一个值,但是还没有定义。