前端面试题整理(js)
1、HTTP协议的状态消息都有哪些?
HTTP状态码是什么:
Web服务器用来告诉客户端,发生了什么事。
状态码分类:
1**:信息提示。请求收到,继续处理
2**:成功。操作成功收到,分析、接受
3**:重定向。完成此请求必须进一步处理
4**:客户端错误。请求包含一个错误语法或不能完成
5**:服务器错误。服务器执行一个完全有效请求失败
状态码详解:
100(继续):服务器收到的请求不完整,但服务器没有拒绝请求,客户端应重新发送一个完整的请求。
101(切换协议):服务器改用别的协议了
200(成功):服务器已成功处理了请求
201(已创建):请求成功并且服务器创建了新的资源
202(已接受): 服务器已接受请求,但尚未处理
203 (非授权信息) :服务器已成功处理了请求,但返回的信息可能来自另一来源。
204 (无内容): 服务器成功处理了请求,但没有返回任何内容。
205 (重置内容): 服务器成功处理了请求,但没有返回任何内容。
206 (部分内容): 服务器成功处理了部分 GET 请求。
300 (多种选择): 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动): 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置): 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304 (未修改): 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (使用代理): 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307 (临时重定向): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
400 (错误请求): 服务器不理解请求的语法。
401 (未授权): 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止): 服务器拒绝请求。
404 (未找到): 服务器找不到请求的网页。
405 (方法禁用): 禁用请求中指定的方法。
406 (不接受): 无法使用请求的内容特性响应请求的网页。
407 (需要代理授权): 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408 (请求超时): 服务器等候请求时发生超时。
409 (冲突): 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410 (已删除): 如果请求的资源已永久删除,服务器就会返回此响应。
411 (需要有效长度): 服务器不接受不含有效内容长度标头字段的请求。
412 (未满足前提条件): 服务器未满足请求者在请求中设置的其中一个前提条件。
413 (请求实体过大): 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 (请求的 URI 过长): 请求的 URI(通常为网址)过长,服务器无法处理。
415 (不支持的媒体类型): 请求的格式不受请求页面的支持。
416 (请求范围不符合要求): 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417 (未满足期望值): 服务器未满足"期望"请求标头字段的要求。
500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
常见的状态码(只要记住这些就可以了):
200——服务器已成功处理了请求
301——请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
404——服务器找不到请求的网页。
500——服务器遇到错误,无法完成请求。
503——服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504——服务器作为网关或代理,但是没有及时从上游服务器收到请求。
2、AJAX是什么? AJAX的交互模型(流程)? AJAX跨域的解决办法?
AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示。
AJAX的工作原理相当于在用户和服务器之间加了一个中间层,使用户操作与服务器相应异步化。并不是所有的用户请求都提交给服务器,像一些数据验证和数据处理等都交给AJAX引擎自己来做,只有确定需要从服务器读取新数据时再由AJAX引擎代为向服务器提交请求。
跨域问题,可以实用jquery的jsonp来处理:
$(document).ready(function(){var url='http://localhost:8080/WorkGroupManagment/open/getGroupById"+"?id=1&callback=?';$.ajax({url:url,dataType:'jsonp',//重点processData: false, type:'get',success:function(data){alert(data.name);},error:function(XMLHttpRequest, textStatus, errorThrown) {alert(XMLHttpRequest.status);alert(XMLHttpRequest.readyState);alert(textStatus);}});});
3、同步和异步的区别?
举个例子:普通B/S模式(同步)——AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
4、简述JavaScript封装。
JS封装就是尽量把使用的方式简单化,内部逻辑和使用解耦。通俗的说就是使用的时候只需要知道参数和返回值,其他条件尽量不要使用人员进行设置。
函数形式:
function taojiaqu(a,b){//内部对a,b进行处理 }
对象形式:
function taojiaqu(a,b){this.x=a;this.y=b; } var tjq = new taojiaqu(1,2);//通过面向对象的方式 alert(tjq.x)
闭包形式:
function tjq(a,b){var k = 1;return function tt(){k++;return k;} } var u = kk(1,2); u();//闭包实现累加 k=2 u();//闭包实现累加 k=3 alert(u());//弹出4
5、JavaScript继承。
对象冒充:
function tjq(username){this.username = username; this.hello = function(){ alert(this.username); } } function taojiaqu(username,password){ //通过以下3行实现将tjq的属性和方法追加到taojiaqu中,从而实现继承 //1:this.method是作为一个临时的属性,并且指向tjq所指向的对象, //2:执行this.method方法,即执行tjq所指向的对象函数 //3:销毁this.method属性,即此时taojiaqu就已经拥有了tjq的所有属性和方法 this.method = tjq; this.method(username);//最关键的一行 delete this.method; this.password = password; this.world = function(){ alert(this.password); } } var parent = new tjq("tjq"); var child = new taojiaqu("taojiaqu","123456"); parent.hello(); //弹出tjq child.hello(); //弹出taojiaqu child.world(); //弹出123456
call()方法方式:
function tjq(username){this.username = username; this.hello = function(){ alert(this.username); } } function taojiaqu(username,password){ //语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) //定义:调用一个对象的一个方法,以另一个对象替换当前对象。 tjq.call(this,username);this.password = password;this.world = function(){ alert(this.password); } } var parent = new tjq("tjq"); var child = new taojiaqu("taojiaqu","123456"); parent.hello(); //弹出tjq child.hello(); //弹出taojiaqu child.world(); //弹出123456
apply方法方式:
function tjq(username){this.username = username; this.hello = function(){ alert(this.username); } } function taojiaqu(username,password){ //语法:apply([thisObj[,argArray]]) //定义:应用某一对象的一个方法,用另一个对象替换当前对象。//跟call基本一个意思,只是第二个参数必须是数组tjq.apply(this,[username]);this.password = password;this.world = function(){ alert(this.password); } } var parent = new tjq("tjq"); var child = new taojiaqu("taojiaqu","123456"); parent.hello(); //弹出tjq child.hello(); //弹出taojiaqu child.world(); //弹出123456
原型链方式:
function tjq(){} tjq.prototype.username='taojiaqu'; tjq.prototype.sayUsername=function(){alert(this.username); } function taojiaqu(){} taojiaqu.prototype=new tjq();//将tjq中将所有通过prototype追加的属性和方法都追加到taojiaqu,从而实现了继承 taojiaqu.prototype.password='123456'; taojiaqu.prototype.sayPassword=function(){alert(this.password); } var parent = new taojiaqu(); parent.sayUsername(); //弹出taojiaqu parent.sayPassword(); //弹出123456
混合方式(原型链+call()):
function tjq(username){this.username=username; } tjq.prototype.sayUsername=function(){alert(this.username); } function taojiaqu(username){tjq.call(this,username);//将tjq属性继承过来this.password='123456';this.sayPassword=function(){alert(this.password);} } taojiaqu.prototype=new tjq();//将tjq原型链方法继承过来 var parent = new taojiaqu('taojiaqu'); parent.sayUsername(); //弹出taojiaqu parent.sayPassword(); //弹出123456
6、什么是闭包?
官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点:
<!doctype html> <html lang="en"> <head><meta charset="UTF-8"><title>js闭包</title><style>*{margin: 0;padding: 0;}li{line-height: 30px;background: red;border-bottom: 1px solid #000}</style> </head> <body><ul><li>1</li><li>2</li><li>3</li><li>4</li></ul> </body> </html> <script>window.onload=function(){var olis=document.getElementsByTagName('li');for(var i=0;i<olis.length;i++){eventClick(olis,i);}}function eventClick(obj,i){return obj[i].οnclick=function(){alert(i);}}</script>
<!doctype html> <html lang="en"> <head><meta charset="UTF-8"><title>js闭包</title><style>*{margin: 0;padding: 0;}li{line-height: 30px;background: red;border-bottom: 1px solid #000}</style> </head> <body><ul><li>1</li><li>2</li><li>3</li><li>4</li></ul> </body> </html> <script>window.onload=function(){var olis=document.getElementsByTagName('li');for(var i=0;i<olis.length;i++){(function(i){olis[i].onclick=function(){alert(i);};})(i);}} </script>
由于闭包可以把变量参数存于内存当中,即使你跳转页面也还会存在,这就引发了内存泄漏,除非你关闭浏览器,它才会自动释放。
转载于:https://www.cnblogs.com/chenrf/p/4895870.html
前端面试题整理(js)相关推荐
- 前端面试题整理汇总(一)
前端面试题整理汇总(一) 优才网 关于前端面试题,优优之前推荐过,如下,点击即可查看: 5个经典的前端面试问题 2016年十家知名公司前端面试经验总结 前端面试会问哪些问题? 前端开发面试题汇总[HT ...
- 前端面试题整理2020
前端面试题整理2020 1.一些开放性题目 1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势. 2.项目介绍 3.如何看待前端开发? 4.平时是如何学习前端开发的? 5. ...
- 前端面试题整理——(第一弹 HTML和CSS)
文章目录 前端面试题整理--(第一弹 HTML和CSS) 1. 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 2. 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什 ...
- 最新前端面试题整理和答案(全)一直更新
最新前端面试题整理和答案(全) 参考地址:https://blog.csdn.net/wdlhao/article/details/79079660 javascript: JavaScript中如何 ...
- 前端面试题整理-ing---kalrry
前端面试题整理-ing---kalrry 前言 一.Html/Css面试题 1. img中的alt和title的区别 2. rem/em/vw的区别 3. BFC 是什么 4. @media all ...
- 前端面试题总结(js部分)|下
40 . 有这样一个 URL: http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e , 请写一段JS程序提取 URL ...
- 前端面试题整理(定期更新)
前言 因为面试的原因,最近又开始关注前端面试题,浏览过网上很多面试题集合,有很多小伙伴整理的很全面,但是我发现其中有很多技术点在当下已不再流行,而面试题一般都是映射开发中常遇到的一些技能和问题,再结合 ...
- 【前端】前端面试题整理
前端和计算机相关知识 你能描述一下渐进增强和优雅降级之间的不同吗 浏览器兼容问题 如何对网站的文件和资源进行优化? 怎么学习前端?怎么接触前端新知识? 关于前后端分离 关于浏览器内核(渲染引擎) 浏览 ...
- 菜鸡前端面试题整理日记
一直以来都有写点什么东西的想法,但又整天犹犹豫豫的,一会觉得准备不够充分,写的内容没什么质量,一会又觉得没什么内容可写的,以至于一拖再拖.万事开头难,难着难着就没有下面了,以此先开个头,记录自己的成长 ...
- WEB前端面试题整理
WEB前端面试题 文章目录 WEB前端面试题 一.html部分 1.Doctype有什么作用?标准模式与兼容模式有什么区别 2.标准模式与兼容模式(怪异模式)各有什么区别? div1和div2之间的距 ...
最新文章
- 获得客户端的时区(get client-side time zone by JS)
- C++多小球非对心弹性碰撞(HGE引擎)
- 关于投稿 LaTeX 的使用
- python将整数逆序_python练手入门小项目:字符串的妙用
- 会话跟踪技术之HttpSession
- 一般java,【面试题】java一般
- byte java 空_java – 如何检查字节数组是否为空?
- S. gcc相关软件安装
- js将数值格式化成金额形式
- 用BT3和spoonwep2研究学习WEP密码…
- 【STC单片机】STC15单片机读取MPU6050模块数据并串口输出
- 3D博物馆虚拟纪念馆数字博览厅的“另类”展现方式
- P4199 万径人踪灭 [Manacher + FFT]
- 2-1.基金的募集,交易与登记
- 软件测试中手机性能测试怎么做,软件测试之手机知与手机性能测试完整版.doc...
- 23种设计模式11---享元模式
- 《笑傲江湖》清心普善咒——曲谱(琴箫合奏曲)
- 深度强化学习-Q-learning解决悬崖寻路问题-笔记(三)
- 1-MATLAB APP Design-图像的输入与输出
- 2022年全球市场Type-C USB网络摄像头总体规模、主要生产商、主要地区、产品和应用细分研究报告
热门文章
- 宝马戴姆勒、大众福特 自动驾驶圈又添新团伙
- html自定义radio样式,用纯CSS 自定义radio checkbox 样式
- java---24点游戏 :从扑克中每次取出4张牌,使用加减乘除,第一个能得出24者为赢。
- hashmap的get查找过程
- Spring @Configuration注解及配置方法
- 022_JavaScript数字
- Java NIO 系列教程
- python编程语言继承_python应用:学习笔记(Python继承)
- abb变频器电机过热保护怎么复位_变频器驱动的电机过热该怎么办
- angularjs组件间通讯_详解Angular2组件之间如何通信