2021年3月面试总结

272 阅读9分钟

前言

因为大学毕业需要进行论文答辩,不得已从实习的公司辞职(虽然工资勉强活着。。。),毕业后就开始投入找工作大军,一个月之后,最后去了一家外包公司,领着低保工资(天天加班,勉强能活),今年2月份辞职,回家过年(有钱没钱回家过年。。。),3月1号开始投简历,面试直接排到下周一,好吧……,我只能说不愧是“金三银四”,每天三四场面试,大大小小的公司都有,感觉自己已经螺旋升天@_@!!!

两天加起来一共7家公司,拿了几个offer,都不是太过满意,不是加班太多(没有加班费。。。),就是工资太低,打算面完,看看能拿到几个offer,下周一挑一个入职吧,好了,废话不多说,开整!!!

面试前必须要做的准备

  1. 简历一定要写好,最好多修改几遍

  2. 想好自己辞职的原因以及理由,不要让人事小姐姐问了,不知道怎么回答。

  3. 不要海投简历,每次投简历之前,看一下招聘要求,至少要有80%的符合程度,再去投简历,不然最后的结果就是“你还不错,但不是我们想要的”,浪费时间!!!

面试知识点总结

因为我20年毕业,问的都比较基础,不管是笔试还是面试,大多数都是基础知识点,特别是原生JS,差点要了我的狗命~~~ (虽然在实习的时候用过,但是用的真的不多,面试的时候,感觉自己被按在地上摩擦。。。),有很多问的我都没了解过,而且记起来的也不多,就随便写写吧……

HTML和CSS

一、说一下什么是HTML语义化,语义化标签有哪些,有什么意义语义化?

1.1 HTML语义化就是正确的标签做正确的事情,能够便于开发者阅读和写出更优雅的代码的同时让网络爬虫很好地解析。

2.1 语义化标签有 header 、footer、section、artical、nav、aside

3.1 有利于SEO,有利于搜索引擎更好的理解我们开发的网页。

3.2 便于团队的开发和维护,提高团队的效率和协作能力。

3.3 支持不同终端的浏览器进行渲染。

(感觉自己脑细胞发出了悲鸣。。。)

二、说一下你常用的布局方式有哪些?

答:flex布局、固定布局、浮动布局、定位布局、流式布局

三、说一下标准盒模型和IE盒模型有什么不同?

答:标准盒子模型:内容宽度不包括边框和内边距

IE盒子模型:内容宽度包括边框和内边距

四、CSS选择器有哪些?

答:id选择器、类选择器、标签选择器、相邻选择器、子选择器、后代选择器、通配符选择器、属性选择器、伪类选择器

JavaScript(重点)

一、 javascript的typeof返回哪些数据类型?

答:string,boolean,number,undefined,function,object

二、split() join() 有什么区别?

答:前者是将字符串切割成数组的形式,后者是将数组转换成字符串

三、说一下什么是闭包,在什么情况下使用?

答:一个持有外部环境变量的函数就是闭包,闭包是访问另一个作用域的变量。

  1. 给对象设置私有变量 2.使用setTimeout调用 3.封装相关功能集

四、说一下什么是原型和原型链?

答:原型:每一个函数都具有prototype属性,它被默认为一个对象,即原型对象

原型链:当对象使用属性的时候,先在自身查找,有就直接使用,没有就沿着__proto__这条链继续往下查找,直到找到Object原型为止,有就返回相应的值,没有就返回underfined。

五、说一下函数声明和函数表达式的区别?

答:在Javscript中,解析器在向执行环境中加载数据时,解析器会先读取函数声明,并使其在执行任何代码之前可以使用,对于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。

六、什么是同源策略,为什么要有同源策略?

答:1、同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,所谓的同源是指域名、端口、协议都相同。 2、同源策略是为了保证服务器的安全,如果其他人的服务器和客户端可以随便请求自己的服务器,就会造成用户信息泄露。

七、前端处理跨域的方法有哪些? 答:1、使用代理 2、使用jsonp跨域(原理:动态的添加一个script标签) 3、使用图片标签 img:src实现 4、使用cors跨域

八、从发送一个url地址到返回页面,中间发生了什么?

答:大概流程:在浏览器中输入网址->进行域名解析(DNS解析) ->请求对应的ip地址服务器 ->服务器返回对应的报文 ->浏览器进行解析并渲染页面

九、promise用过没有,它的原理是什么?

答:promise原理:通过promise对象,监听内部状态的变化,当内部状态发生变化的时候,触发相应的回调,回调执行完返回this,移除数组第一个then,再重新监听内部状态。

Vue.js相关知识点

身为一个毕业生,不可能说自己啥也不会吧,只能把用过的Vue写上了。。,其实就是边学习边开发,经常遇到一些坑,好在以前的项目也不难。。。

一、说一下Vue的生命周期?

答:Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂在DOM、渲染→更新→渲染、卸载等一系列过程,这就是Vue的生命周期。简单的说就是Vue实例从创建到销毁的一系列过程,称为Vue的生命周期。

二、说一下Vue中的钩子函数有哪些 (生命周期)?

答:Vue中的钩子函数有beforeCreate、created(在created中首次拿到data中的数据)、beforeMount、mounted(在mounted中DOM树渲染结束,可以访问DOM结构)、beforeUpdate、updated、beforeDestroy、destroyed

三、组件之间的通信方式有哪些,传值方式有哪些?

答:1、组件之间的通信方式有:父子组件通信 兄弟组件通信 跨级组件通信

2、组件之间的传值方式有:

 provide/inject $attrs $listener props $emit/$on vuex $parent/$children ref

四、Vue中的$set有什么用?

答:在Vue中对一个对象内部进行一些修改的时候,Vue没有监听到变化,无法触发视图更新,此时用$set来触发更新,使视图展示最新的数据。

五、在Vue中跨域如何实现?

答:1、在Vue项目中的config目录下面的index文件中的ProxyTable里面进行配置

2、使用CORS 跨域资源共享

3、使用Nginx进行跨域

六、说一下Vue的双向数据绑定原理?

答:Vue.js采用的数据劫持结合发布者订阅者-订阅者模式的方法,通过Object.defineProperty()来劫持各个属性的getter和setter,在数据发送变动时,发布消息给订阅者,触发相应的回调。

七、什么是MVVM,它和MVC有什么区别?

答:1、MVVM是Model-View-ViewModel的缩写,是一种设计思想,Model代表数据模型,View代表视图组件,ViewModel是一个同步View和Model的对象。 2、MVVM和MVC都是一种设计思想,主要区别就是MVC中的controller变成了MVVM中的viewModel。 3、MVVM主要解决了MVC中大量的DOM操作,是页面渲染性能降低,影响用户体验的问题。

八、Vue的优点有哪些?

答:低耦合性 可重用性 独立开发 可测试

九、Vuex是什么,有哪几种属性,不用Vuex会带来什么影响?

答:1、Vuex是Vue框架的状态管理器,有State、Getter、Mutation、Action、Module

2、会导致可维护性降低 可读性降低 增加耦合性

十、v-show和v-if指令有什么区别?

答:v-if是通过增加和删除DOM元素,来达到让元素显示或者隐藏的效果

v-show是通过修改元素的display的属性来让其显示或隐藏

十一、keep-alive的作用是什么?

答:包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染

十二、第一次加载页面时,会触发哪几个钩子,DOM渲染在什么时候完成?

答:第一次加载页面时,会触发beforeCreate、created、beforeMount、mounted这几个钩子,DOM渲染在mounted中就已经完成了。

十三、Vue中为什么要使用key?

答:当有相同的标签名时,需要通过key来设置唯一的值,可以让vue进行区分,避免Vue替换相同标签内部的内容。

十四、VNode是什么,虚拟DOM是什么?

答:Vue在页面上渲染的节点,以及其子节点称为“虚拟节点(Virtual Node)”,简写为“VNode”。“虚拟DOM”是由Vue组件树建立起来的整个VNode树的称呼。

十五、说一下Vue项目中src目录每个文件夹和文件的用法?

答:assets文件用来存放静态资源 components存放组件 router定义路由相关的配置 view视图 app.vue是一个应用的主组件 main.js是入口文件

十六、Vue.js中的template的编译原理?

答:简单地说,就是先转化成AST语法树,再得到render函数返回的VNode。

十七、v-model的实现原理?

答:在Vue中v-model这个语法糖能够很方便的实现表单和数据之间的绑定,v-model的实现原理是因为封装了一些逻辑,例如:在input上绑定Message,并通过input事件获取当前事件的target.value,并赋值给message。

十八、v-model双向绑定原理?

答:v-model本质上是value和v-on的结合体,就是通过绑定对象的value,通过v-on进行触发,从而更新数据。

最后

最后,也没啥想说的,毕竟我还是一个前端的小菜鸡,知识点是自己面试的时候被问到的,也有的是自己准备的面试题,结束~~~end