面试题资源来源:牛客网
请讲一下类的创建和继承的具体过程,以及类的继承形式和特点
类的创建方式:
1、工厂模式:在函数里定义一个对象,最后return这个对象。
function app(name,age,job){
var obj = {
name: name,
age: age,
job: job
}
return obj;
}
var myObj = app("bill",32,"engineer");
console.log(myObj.name) //bill
解决了创建多个相似对象的问题,但没有解决对象识别的问题。也就是说我们无法知道创建出来的对象类型。
2、构造函数模式 构造函数也是函数,只不过可以用来创建对象。要创建构造函数的新实例,必须要用new操作符调用构造函数。
function Person(name, age, job){
this.name = name;
this.age = age;
this.job = job;
this.sayName = function(){
alert(this.name);
}
}
var person1 = new Person("bill", 23, "doctor");
var person2 = new Person("lily", 20, "student");
//person1 person2
缺点:每个方法都要在每个实例上重新创建一遍。
3、原型模式:让所有的对象实例共享原型属性和方法。 每个函数都有一个prototype属性,这个属性指向通过调用构造函数创建的那个对象实例的原型对象。Func.prototype --> new Func()的原型对象
function Person(){}
Person.prototype.name = "bill";
Person.prototype.age = 32;
Person.prototype.job = "teacher";
var pers1 = new Person();
var pers2 = new Person();
//pers1与pers2共享Person.prototype上的属性和方法,在一个对象上作原型属性的改变会影响另一个对象。
4、动态原型模式:将信息都封装在构造函数内部,通过条件判断,在必要时再初始化原型。
function Person(name, age,job){
this.name = name;
this.age = age;
this.job = job;
}
if( typeof this.sayName != "function"){
Person.prototype.sayName = function(){
alert(this.name!);
};
}
5、寄生构造函数模式:除了用构造函数封装对象,并用new调用该构造函数,其它与工厂模式完全相同。
function Person(name,age,job){
var obj = {
name: name,
age: age,
job: job
}
return obj;
}
var myObj = new Person("bill",32,"engineer");
console.log(myObj.name) //bill
6、稳妥构造函数模式:与寄生构造函数类似,不同点在于:新创建对象的实例方法不引用this;不适用new操作符调用构造函数。
function Person(name, age, job){
var obj = new Object();
obj.sayName = function(){
alert(name);
}
return obj;
}
var friend = Person("bill", 43, "student");
friend.sayname() //稳妥构造函数中,只有此方法可以访问到name属性。
请你讲讲http1.1和1.0的区别
http1.1相比1.0有如下几点不同: http1.1相比1.0有如下几点不同:
请你谈一下transition和animation的区别
谈一下,tcp为什么要建立连接?
tcp是提供可靠性连接的,只有支持端到端的连接,才能进行可靠性传输,连接的主要功能在于记录两个端口间的通信状态,不连接则无法记录两个端口通信的状态,则无法知道丢失了哪个数据包,重复收到了哪个数据包,也无法确保数据包之间的到达顺序,还有很多增加可靠性的功能都无法应用。
请讲一下对于前端中的事件流,你是怎么理解的
事件流是浏览器中页面接收到事件的顺序,从最外层的元素到最里层的元素为事件捕获阶段,从最里层元素传到最外层元素是事件冒泡阶段。之前也分为捕获流和冒泡流,不过现在基本都是冒泡流了。
请讲一下图片的懒加载和预加载不同点,他们的本质是什么?这两种技术对于服务器前段的影响各是什么?
预加载是提前加载,懒加载是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。
请说明一下哪种应用场景会使用TCP协议,使用它的意义
tcp协议是面向连接的,可靠的数据传输协议,但是它的传输数据速率相比于udp协议比较慢。它适用于对数据传输可靠性要求比较高的场景,例如文本传输之类的。
你知道400和401、403状态码是什么吗?
请你讲一下,使用setTimeout()方法来模拟setInterval()与直接使用setInterval()有什么区别
settimeout调用自身
有哪些可以实现垂直居中的方法?
利用flex:
display:flex;
flex-deriction:column;
align-item:center;
利用定位和缩放:
position:aboslute;
left:0;
right:0;
top:0;
bottom:0
margin:auto;
transform:tanslate(-50%,-50);
什么是"前端工程化"?
前端工程化是使用软件工程的技术和方法来进行前端的开发流程、技术、工具、经验等规范化、标准化,其主要目的为了提高效率和降低成本,即提高开发过程中的开发效率,减少不必要的重复工作时间,而前端工程本质上是软件工程的一种,因此我们应该从软件工程的角度来研究前端工程。
如何做"前端工程化"?
前端工程化就是为了让前端开发能够“自成体系”,个人认为主要应该从模块化、组件化、规范化、自动化四个方面思考。
xss跨站脚本攻击原理?如何进行?防御手段?
Sql脚本注入原理?如何进行?防御手段?
什么是跨域?
由浏览器同源策略限制的一类请求场景,当不同地址,不同端口,不同级别,不同协议就会构成跨域。 什么是同源策略? 所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。
如何解决跨域?
HTTP常用状态码及其含义?
状态码 | 含义 |
---|---|
1xx | 指示信息--表示请求已接收,继续处理 |
100 Continue | 初始的请求已经接受,客户应当继续发送请求的其余部分 |
101 Switching Protocols | 服务器将遵从客户的请求转换到另外一种协议 |
2xx | 成功--表示请求已被成功接收、理解、接受 |
200 | 一切正常,对GET和POST请求的应答文档跟在后面 |
201 Created | 服务器已经创建了文档,Location头给出了它的URL |
202 Accepted | 已经接受请求,但处理尚未完成 |
203 Non-Authoritative Information | 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝 |
204 No Content | 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的 |
205 Reset Content | 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容 |
206 Partial Content | 客户发送了一个带有Range头的GET请求,服务器完成了它 |
3xx | 重定向--要完成请求必须进行更进一步的操作 |
300 Multiple Choices | 客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明 |
301 Moved Permanently | 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL |
302 Found | 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user(缺少了后面的斜杠),有的服务器返回301,有的则返回302。严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向 |
303 See Other | 类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取 |
304 Not Modified | 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用 |
305 Use Proxy | 客户请求的文档应该通过Location头所指明的代理服务器提取 |
307 Temporary Redirect | 和302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时 才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向 |
4xx | 客户端错误--请求有语法错误或请求无法实现 |
400 Bad Request | 请求出现语法错误 |
401 Unauthorized | 客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求 |
403 Forbidden | 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致 |
404 Not Found | 无法找到指定位置的资源。这也是一个常用的应答 |
405 Method Not Allowed | 请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)对指定的资源不适用 |
406 Not Acceptable | 指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容 |
407 Proxy Authentication Required | 类似于401,表示客户必须先经过代理服务器的授权 |
408 Request Timeout | 在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求 |
409 Conflict | 通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功 |
410 Gone | 所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用 |
411 Length Required | 服务器不能处理请求,除非客户发送一个Content-Length头 |
412 Precondition Failed | 请求头中指定的一些前提条件失败 |
413 Request Entity Too Large | 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头 |
414 Request URI Too Long | URI太长 |
416 Requested Range Not Satisfiable | 服务器不能满足客户在请求中指定的Range头 |
5xx | 服务器端错误--服务器未能实现合法的请求 |
500 Internal Server Error | 服务器遇到了意料不到的情况,不能完成客户的请求 |
501 Not Implemented | 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求 |
502 Bad Gateway | 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答 |
503 Service Unavailable | 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头 |
504 Gateway Timeout | 由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新)505 HTTP Version Not Supported 服务器不支持请求中所指明的HTTP版本 |
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有