| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 前端面试题(三) -> 正文阅读 |
|
[JavaScript知识库]前端面试题(三) |
1.行内元素有哪些?块级元素有哪些? 空(void)元素有那些? ????????CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,比如div默认display属性值为“block”,成为“块级”元素;span默认display属性值为“inline”,是“行内”元素。 行内元素有:span a b i img input select strong 2.什么是盒子模型? 盒子模型是css3新特性。具有以下特性: 把所有的网页元素都看成一个盒子,它具有: content,padding,border,margin 四个属性,这就是盒子模型 盒子模型有两种形式:标准盒子模型,怪异盒子模型 两种模式可以利用box-sizing属性进行自行选择: 3.简述一下src与href的区别? src和href都是属于外部资源的引用,像一些图片,css文件,js文件,或者其他的web页面 4.什么是CSS Hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),以达到应用不同的CSS样式的目的。 CSS属性Hack、CSS选择符Hack以及IE条件注释Hack, Hack主要针对IE浏览器。 1、属性级Hack:比如IE6能识别下划线“ 2、选择符级Hack:比如IE6能识别 3、IE条件注释Hack:IE条件注释是微软IE5开始就提供的一种非标准逻辑语句。比如针对所有IE: PS:条件注释只有在IE浏览器下才能执行,这个代码在非IE浏览下被当做注释视而不见。可以通过IE条件注释载入不同的CSS、JS、HTML和服务器代码等。 浏览器优先级别:
?书写顺序一般为FF IE7 IE6 注意: 不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。补充:IE6能识别 5.为什么不推荐使用CSS hack来解决兼容性问题 ? CSS hack是因为现有浏览器对标准的解析不同,为了兼容各浏览器,所采用的一种补救方法。CSS hack是一种类似作弊的手段,以欺骗浏览器的方式达到兼容的目的,是用浏览器的兼容性差异来解决浏览器的兼容性问题。因此,在设计之初,写CSS hack需要遵循以下三条原则:
6.简述同步和异步的区别? javascript是单线程的语言,所谓的单线程,就是从上至下,依次执行,当然这里的依次执行要抛开javascript的预解析机制。* 7.px和em的区别? px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。 em是相对长度单位。相对于当前对象内文本的字体尺寸,多理解父级设定font-size的尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。 任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。 为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。 注:在body里面注明 font-size:62.5%; 1.之后可以将em当px使用,x10就好,当然前提是父级标签里面没设定font-size, 2.一旦父级元素有设定字体大小, em前面数值x就相当于父级元素字体乘以x% 3.相对最临近父级元素,且可以一直往下叠加. 8.什么叫优雅降级和渐进增强? 优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作。由于IE独特的盒模型布局问题,针对不同版本的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案,使之在旧式浏览器上以某种形式降级体验却不至于完全失效. 9.浏览器的内核分别是什么?
10.http 状态码,以及常见的状态码? HTTP状态码表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常或者是出现的错误,能够根据返回的状态码判断请求是否得到正确的处理很重要,状态码由3位数字和原因短语组成。 状态码分类表: 各类别常见状态码: 2xx (3种) 200 OK:表示从客户端发送给服务器的请求被正常处理并返回; 204 No Content:表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不含实体的主体部分(没有资源可以返回); 206 Patial Content:表示客户端进行了范围请求,并且服务器成功执行了这部分的GET请求,响应报文中包含由Content-Range指定范围的实体内容。 3xx (5种) 301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL; 302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL; ? ? ? ?301与302的区别:前者是永久移动,后者是临时移动(之后可能还会更改URL) 303 See Other:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源; ? ? ? 302与303的区别:后者明确表示客户端应当采用GET方式获取资源 304 Not Modified:表示客户端发送附带条件(是指采用GET方法的请求报文中包含if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任一首部)的请求时,服务器端允许访问资源,但是请求为满足条件的情况下返回改状态码; 307 Temporary Redirect:临时重定向,与303有着相同的含义,307会遵照浏览器标准不会从POST变成GET;(不同浏览器可能会出现不同的情况); 4xx (4种) 400 Bad Request:表示请求报文中存在语法错误; 401 Unauthorized:未经许可,需要通过HTTP认证; 403 Forbidden:服务器拒绝该次访问(访问权限出现问题) 404 Not Found:表示服务器上无法找到请求的资源,除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用; 5xx (2种) 500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时; 503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求; 11.请描述一下cookies,sessionStorage和localStorage的区别?
12.怎样添加、移除、移动、复制、创建和查找节点? createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 createTextNode() //创建一个文本节点 2)添加、移除、替换、插入 appendChild() //添加 removeChild() //移除 replaceChild() //替换 insertBefore() //插入 3)查找 getElementsByTagName() //通过标签名称 getElementsByName() //通过元素的Name属性的值 getElementById() //通过元素Id,唯一性 13.Javascript中callee和caller的作用?
14.数组快速排序? var quickSort = function(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++){ if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right));//递归算法 }; 15.一次完整的HTTP事务是怎样的一个过程? 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户 16.什么是React 路由? 现代前端大多数都是SPA(单页面程序),也就是只有一个HTML页面的应用程序,因为它的用户体验更好,对服务器压力更小,所以更受欢迎,为了有效的使用单个页面来管理原来多页面的功能,前端路由应运而生。 前端 路由的功能:让用户从一个视图(页面)导航到另一个视图(页面) 17.为什么React Router v4中使用 switch 关键字 ? ????????有标签,则其中的在路径相同的情况下,只匹配第一个,这个可以避免重复匹配;为了更好地匹配规则,轻易不要舍弃?。 ????????Switch匹配到第一个路由就不会继续匹配了, ????????如果没有Switch也没有exact,不管点击哪个链接都会有path=’/的页面’。 ????????有Switch没有exact:不管点击哪个链接都只会出来path=’/'的页面(也就是Main页面)。 18.列出 React Router 的优点? 1.风格: 与React融为一体,专为react量身打造,编码风格与react保持一致,例如路由的配置可以通过component来实现 缺点:API不太稳定,在升级版本的时候需要进行代码变动。 19.为什么需要 React 中的路由? react-router-dom这个包,给我们声明了很多的组件,我们可以直接导入这些组件去使用,就可以完成我们想要的路由相关的功能 原理:实现URL与UI界面的同步。其中在react-router中,URL对应Location对象, 20.React Router与常规路由有何不同? 前端的路由和后端的路由在实现技术上不一样,但是原理都是一样的。在 HTML5 的? 用户可能都察觉不到该访问地址是 Web 服务实现的路由还是前端实现的路由。 从性能和用户体验的层面来比较的话,后端路由每次访问一个新页面的时候都要向服务器发送请求,然后服务器再响应请求,这个过程肯定会有延迟。而前端路由在访问一个新页面的时候仅仅是变换了一下路径而已,没有了网络延迟,对于用户体验来说会有相当大的提升。 21.知道hoc和render props吗,它们有什么作用?有什么弊端? 1.学习 HOC 我们只需要记住以下 2 点定义: ? ? ? ? 创建一个函数, 该函数接收一个组件作为输入除了组件, 还可以传递其他的参数 ????????基于该组件返回了一个不同的组件. HOC 的优点:不会影响内层组件的状态, 降低了耦合度 2.render props 功能: 将一个组件内的 state 作为 props 传递给调用者, 调用者可以动态的决定如何渲染.
缺点:
嵌套:
22.useState中的第二个参数更新状态和class中的this.setState区别? 二者参数对比:
setState()使用注意事项
useState()使用注意事项
为什么叫做 useState 而不是 createState ? setState 方式会 重新渲染组件 this.state的方式会改变值,但不会重新渲染组件(这就是为什么你改变了值,但是页面没有响应你) 在使用时。可以先使用this.state.的方式来赋值。在最后一次赋值使用setState的方式。这样组件之渲染一次达到赋值的效果。 在render()中。也就是在页面初始化阶段一定不能用state。否则会造成不断的重新渲染组件。导致崩掉。 1、二者更新数据时,第一个参数都可以传入函数 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:16:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |