腾讯面试题总结

本来是不打算去了,这个hr啊,给人讲了一堆道理,非要让我去一下,就只能抱着试试的心态去了。结果,笔试答完就是技术面,笔试上面没被刷掉,下面的技术面我感觉我都能说到点子上,面试官不好好听我说,没等我说完,就了解。就接着出下一题。

笔试题

记得最清楚的几个简答题如下:

1.position的值有哪些?
2.vuex的5个核心有哪些?
3.写一个原型函数,功能是数组去重。(这个没写出来的当场打发走人了)
4.浏览器页面渲染的过程(写的详细点比较好),优化方案。
5.写一个vue的自定义头像组件,形状可以配置(值为:方形,圆形),头像的src属性可配置,尺寸可配置(值为:大,中,小)。
6.数组和字符串都有的方法有哪些?

concat(),includes(),indexOf(),lastIndexOf(),toString(),valueOf(),slice()数组和字符串都有的方法

技术面1

一、什么是原型,如何实现继承?
js遵循万物皆是对象这一准则,每个对象都会在其内部初始化一个属性,就是 prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去 prototype 里找这个属性,这个prototype 又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。
关系:**instance.constructor.prototype = instance.proto

特点:
JavaScript 对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。当我们需要一个属性的时,Javascript 引擎会先看当前对象中是否有这个属性, 如果没有的话,就会查找他的 Prototype 对象是否有这个属性,如此递推下去,一直检索到 Object内建对象。

function Func(){}
   	 Func.prototype.name = "Sean";
  	 Func.prototype.getInfo = function() {
  	 return this.name;
}
	var person = new Func();		//现在可以参考 var person = Object.create(oldObject);
	console.log(person.getInfo());	//它拥有了 Func 的属性和方法
	//"Sean" 
	console.log(Func.prototype);
	// Func { name="Sean", getInfo=function()}

实现继承方式
1、构造继承
2、原型继承
3、实例继承
4、拷贝继承
原型 prototype 机制或 apply 和 call 方法去实现较简单,建议使用构造函数与原型混合方式。

function Parent(){
	this.name = 'wang';
}
function Child(){
	this.age = 28;
}
Child.prototype = new Parent();//继承了 Parent,通过原型
var demo = new Child();
alert(demo.age);
alert(demo.name);//得到被继承的属性

更多继承方式浏览该文章哦:https://www.cnblogs.com/cjr001/p/7241553.html
2.html5和css3的新特性有哪些?(这种的就是随便都能说出几个来吧)
3.es6了解吗,你常用哪些?
4、你知道什么是闭包吗?为什么要用它?
闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。使用闭包可以形成独立的空间,延长变量的生命周期,报存中间状态值
特点:
1)函数内再嵌套函数
2)内部函数可以引用外层的参数和变量
3)参数和变量不会被垃圾回收机制回收

5、你对面向对象的理解?
面向对象的语言有一个标志,那就是它们都有类的概念,通过类来创建任意多个具有相同属性和方法的对象。它是一种程序开发的方法,它将对象作为程序的基本单元,将逻辑和数据封装其中,以提高代码的灵活性、重用性和扩展性。对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体。简单的来说,就是很多属性放在集合中,而集合中的属性属性值一一对应,属性属性值也就是我们平时所说的键值对,其中键值可以是数据或函数
请参考:https://segmentfault.com/a/1190000015753259
6、深拷贝和浅拷贝的区别?
结合这两个文章,明明白白
http://developer.51cto.com/art/201809/584137.htm
https://www.cnblogs.com/echolun/p/7889848.html

技术面2

1.什么是跨域,如何解决跨域?有什么缺点。
缺点自己百度下。
https://segmentfault.com/a/1190000013278814?utm_source=tag-newest
2.axios用过吗?它是怎么实现跨域的?axios和ajax有什么区别?
axios的跨域:这两个文章讲的清楚
https://blog.csdn.net/yuanlaijike/article/details/80522621
https://blog.csdn.net/yuanlaijike/article/details/80522621
区别:
Ajax
传统 Ajax 指的是 XMLHttpRequest(XHR), 最早出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱。

JQuery ajax 是对原生XHR的封装,除此以外还增添了对JSONP的支持。经过多年的更新维护,真的已经是非常的方便了,优点无需多言;如果是硬要举出几个缺点,那可能只有:

1.本身是针对MVC的编程,不符合现在前端MVVM的浪潮
2.基于原生的XHR开发,XHR本身的架构不清晰。
3.JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务)
4.不符合关注分离(Separation of Concerns)的原则
5.配置和调用方式非常混乱,而且基于事件的异步模型不友好。

axios:

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,它本身具有以下特征:
1.从浏览器中创建 XMLHttpRequest
2.支持 Promise API
3.客户端支持防止CSRF
4.提供了一些并发请求的接口(重要,方便了很多的操作)
5.从 node.js 创建 http 请求
6.拦截请求和响应
7.转换请求和响应数据
8.取消请求
9.自动转换JSON数据
PS:防止CSRF:就是让你的每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就可以轻松辨别出这个请求是否是用户在假冒网站上的误导输入,从而采取正确的策略。

转自链接:https://www.jianshu.com/p/8bc48f8fde75

3、说一下你对vue-router的理解。

感觉问的好广泛啊!!!不知道他想要什么答案,就简单的说了下。
正常情况下都会问的比较具体的:
https://www.jianshu.com/p/7d71d3f23988

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值