最近正在找前端开发工作,在各大公司中遇到了以下的面试题,和大家分享一下:
先说下我的简历上写的技能:
熟悉移动端开发,并熟练使用vue.js,es6,jquery,ajax,javascript,html5+css3,webpack打包,MVC或MVVM的模块化开发,微信小程序,微信二次开发,Photoshop切图,h5混合开发(懂得不多,第一次发,写的不好的地方多谅解,多批评,谢谢)
所以遇到以下各式问题:
1.vue中v-show和v-if的区别?
es6则新增了块级作用域,let命令只在代码块内有效
es6有类的概念,更像java的面向对象(封装、继承、多态)
除了这些还会问你一些用过哪些开源框架,自己会写插件吗,webpack如何打包的,是否懂一种后端语言,还会问你一些简历上的项目等等,还是会因人而异的,希望大家都面试成功哦^_^。
先说下我的简历上写的技能:
熟悉移动端开发,并熟练使用vue.js,es6,jquery,ajax,javascript,html5+css3,webpack打包,MVC或MVVM的模块化开发,微信小程序,微信二次开发,Photoshop切图,h5混合开发(懂得不多,第一次发,写的不好的地方多谅解,多批评,谢谢)
所以遇到以下各式问题:
1.vue中v-show和v-if的区别?
- v-show:条件不满足时会自动设置为display:none,还是会出现在dom中;
- v-if:条件不满足时将不会有这个html标签生成,不会出现在dom中;
- 单页是指在浏览器中运行的应用,使用期间页面无刷新,整个webapp就一个html文件,所有数据交由ajax完成。
- v-model使用的时候是双向绑定,但是vue是单向数据流,v-model只是语法糖。
- 举个例子:
<input v-model="data.name"/> <!--上面的双向绑定 在实际运行中会被转换成下行代码:--> <input :value="data.name" v-on:input="data.name = $event.target.value"/>
- 1.let 和 var
es6则新增了块级作用域,let命令只在代码块内有效
- 2.继承
es6有类的概念,更像java的面向对象(封装、继承、多态)
- 3.es6有新的api
- Promise:是处理异步操作的对象,使用了 Promise对象之后可以用一种链式调用的方式来组织代码
- ……
5.jsonp的原理?
- 利用script标签的异步加载特性实现给服务端传一个回调函数,服务器返回一个传递过去的回调函数名称的js代码
- 问到这种实际的问题,一般事先都没有准备都是当时直接发挥,可以现在脑子里理下思路:
- 先定义一个公共方法,在方法里面传调接口的数据,地址,成功函数,失败函数等等
- 1.数组有原生的方法sort()排序,sort排序是先数字后字母排序。
- 2.冒泡排序(来个稍微复杂点的,真实面试题):
- 题目:根据data中的id进行排序
var data = [{'id':1,'name':'小鲤鱼'},{'id':5,'name':'李四'},{'id':4,'name':'王五'},{'id':2,'name':'赵六'},{'id':3,'name':'绿茶'}];
for(var i =0;i<data.length-1;i++){
for(var j = i+1;j<data.length;j++){
if(data[i].id>data[j].id){
var temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
} 8.数组去重(笔试题) var arr = [1,2,8,5,3,6,4,1,5,9,3,7];
var newArr = [];
var json = {};
for(var i = 0; i < arr.length; i++){
if(!json[arr[i]]){
newArr.push(arr[i]);
json[arr[i]] = 1;
}
} 9.如何只获取对象中的keyvar obj = {'id':1,'name':'小老鼠','sex':'boy','age':21};
for(var key in obj){if(obj.hasOwnProperty(key)){console.log(key);}} 10.引用值和原始值有哪些?- 原始值:string,undefined,null,number,boolean
- 引用值:array,object,function
- 1.新的Doctype:尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染
- 2.input表单元素类型:date,email
- 3.html语义化:用正确的标签包含正确的内容,好处是结构良好便于阅读,提高搜索率seo
- 4.webstorage:localstorage和sessionstorage
- 5.新增api:地图、拖放,音频
- 6.web worker:是运行在浏览器后台的js程序。不影响主程序的运行,是另开的一个js线程,可以用这个线程执行复杂的数据操作,然后把操作结果通过postMessage传递给主线程。
- localstorage:持久话存储在客户端,只要用户不主动删除,就不会消失;存储大小是5M;
- sessionstorage:存储在客户端,关闭会话,存储的数据则消失;存储大小是5M;
- cookie:存储在浏览器端;存储大小是4096个字节
- 1.外层包一个div
- 2.反过来则是用display:inline;
<div id="conent" style="display:-webkit-box;">
<div class="left">left</div>
<div class="right">right</div>
</div>
<style>
#conent {width:100%;height:300px;}
.left {width:100px;}
.right {width:100%;}
</style>15.em和rem的区别
- rem: 取决于根元素字体的大小,根元素字体大小乘以你的rem值;
- em: em值乘以使用em单位的元素的字体大小;
- 1.减少http请求次数
- 2.减少对dom进行操作
- 3.代码不冗余,减少重复代码
- 4.使用语义化标签
- 5.js代码压缩等
- cmd: 延时执行
- amd: 加载前执行
- 定义: 当一个内部函数被其外部函数之外的变量引用时,就形成了闭包。
- 特性: 函数嵌套函数,函数内部可以引用外部的参数和变量,参数和变量不会被垃圾回收机制回收。
- 使用场景: 当需要在模块中定义一些变量,并希望这些变量一直保存在内存中但又不会被污染全局变量时,可以利用闭包解决。
- 缺点:常驻内存,会增大内存使用,使用不当很容易造成内存泄露。
除了这些还会问你一些用过哪些开源框架,自己会写插件吗,webpack如何打包的,是否懂一种后端语言,还会问你一些简历上的项目等等,还是会因人而异的,希望大家都面试成功哦^_^。