title: 其他人面试题 date: 2019-11-16 18:40:25 tags: 面试题
第一份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 function Person ( ) {}Person .prototype .name = "nick" ;Person .prototype .age = 20 ;Person .prototype .job = "Engineer" ;Person .prototype .sayName = function ( ) { console .log (this .name ); }; var person1 = new Person ();var person2 = new Person ();person1.name = "Greg" ; console .log (person1.name );console .log (person2.name );console .log (person1.hasOwnProperty ("name" ));
输出
请列举 js 的数据类型
请写出 dom 事件流的三个阶段
js 如何添加,移除,创建,复制,查找 dom 节点
jQuery 的 bind,live,delegate 的区别
请写出至少 4 种 vue 的指令和用法
什么是闭包,什么时候使用闭包
如何编写响应式网页
简单描述一下微信小程序的文件类型
如何优化代码
请列举 ES6 的语法
第二份
this 原型链 new 结合的题,问输出什么
css 有什么选择器,优先级,什么属性,哪些可以继承,哪些不能继承,css3 新增的伪类有哪些
vue 组件通信
ajax 返回三个状态码,成功失败未知,假如是未知就轮询,1 到 5 秒延迟 3 秒发请求,6 到 10 秒延迟 1 秒,10 到 20 延迟 0.5 秒,轮询 20 次失败,手写可运行的代码
数组{城市,省份,代号}输出成{省份,城市[城市名,代号]}
js 有什么 bug 让你写代码出错,答类型判断.追问,怎么通过原型链判断一个对象是 json,
平时写代码有什么逻辑上的错误
当前端有什么技巧?(不是优化).答:console 二分法定位错误
第三份
将下列数据封装成 json
数据名
值
类型
name
kate
string
age
10
int
phone
15455234376
string
phone
15455234376
string
date_time
2019-01-01 15:00:00
string
将如下 json 字符串转化成 js 对象并获取到 name 的值
1 var json_str = { name : "tiger" };
输出
1 2 3 var json_str = { name : "tiger" };var str = JSON .parse ("json_str" );console .log (str.name );
获取如下变量中的月和日
1 var date_time = "2019-01-01 15:00:00" ;
输出
1 2 new Date (date_time).getMonth () + 1 ;new Date (date_time).getDate ();
写出尽可能多的 dom 事件和 js 事件
写出尽可能多的伪类和伪元素
css3 2D 转换,如右图效果(效果是第二个 div 方块向上位移一半,能够覆盖一点第一个 div,然后顺时针旋转 30 度),代码如下,请填写 div2 的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <!DOCTYPE html> <head > <style > div { width : 100px ; height : 75px ; background-color : lightgray; border : 1px solid black; } div #div2 { } </style > </head > <body > <div > 1号div元素</div > <div id ="div2" > 2号div元素</div > </body > </html>
输出
1 2 3 4 5 div#div2{ transform : translateY (-20 %);transform : rotate (30deg);}
css 动画使用哪个属性,过渡使用哪个属性
写一种灰色的 rgb 值
尽可能多的 vue 的生命周期,并标注运行时间
控制元素是否显示的 vue 属性
下面代码的打印结果. 简述什么是变量的作用域,全局变量和局部变量的区别
1 2 3 4 5 6 7 8 9 10 var a = 10 ;function test ( ) { a = 100 ; console .log (a); console .log (this .a ); var a; console .log (a); } test ();console .log (a);
输出
简述 cookie 和 session 的区别
简述 axios 的作用和优势.
第四份
v-show 和 v-if 的区别
let 和 const 的区别
fetch 和 axios 支持跨域请求吗?fetch 第一次得到什么数据,怎么进行转换?
什么是 MVC 和 MVVM,vue 属于那一种?小程序是什么思想实现双向数据绑定的?
async 和 await 实现同步的好处
React/Vue 中 key 会影响 diff 算法吗
Vue-router 的路由原理
什么是虚拟 dom
第五份
使用 css 让该节点不可见,方法越多越好
1 <div class ="hidden" >Hi </div>
输出
在哪些场景下用过 position 的哪些值,他们分别有什么特性.
什么是单进程?什么是单进程异步?
输出结果
1 2 3 4 5 6 7 8 9 10 var fn = [];for (var i = 0 ; i < 10 ; i++) { fn[i] = function (param ) { console .log (i + param); }; } fn[5 ](5 ); var data = { a : 10 , b : 20 };console .log ("第" + i + "条数据:" + data);
输出
1 2 15 ; ("第10条数据:[object Object]" );
输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 console .log (1 );setTimeout (() => { console .log (2 ); }, 0 ); console .log (3 );new Promise ((resolve, reject ) => { console .log (4 ); resolve (); }).then ( () => { console .log (5 ); }, () => { console .log (6 ); } ); console .log (7 );
输出
输出结果
1 2 3 4 5 6 7 8 9 10 const a = [1 , 1 , 1 , 1 , 1 ];for (let i = 0 ; i < 5 ; i++) { for (let j = 0 ; j < 5 ; j++) { a[i] = a[i] + a[j]; } } for (let i = 0 ; i < 5 ; i++) { console .log (a[i]); }
输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 a[0 ] = a[0 ] + a[0 ]; a[0 ] = a[0 ] + a[1 ]; a[0 ] = a[0 ] + a[2 ]; a[0 ] = a[0 ] + a[3 ]; a[0 ] = a[0 ] + a[4 ]; a[1 ] = a[1 ] + a[0 ]; a[1 ] = a[1 ] + a[1 ]; a[1 ] = a[1 ] + a[2 ]; a[1 ] = a[1 ] + a[3 ]; a[1 ] = a[1 ] + a[4 ]; a = [6 , 17 , 50 , 149 , 446 ];
写出 1 所在的 while 循环的作用.补全 2 的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 function isSymmetry (n ) { let i = n; let j = 0 ; while (i) { j = j * 10 + (i % 10 ); i = parseInt (i / 10 ); } return ; } console .log (isSymmetry (12321 )); console .log (isSymmetry (12312 ));
输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 假设: n = 11 , i = 11 ,j = 0 ; i = 1 ,j = 1 ; i = 0 ,j = 11 n = 111 , i = 111 ,j = 0 ; i = 11 ,j = 1 ; i = 1 ,j = 11 ; i = 0 ,j = 111. n = 12 , i = 12 ,j = 0 ; i = 1 ,j = 2 ; i = 0 ,j = 21. return n == jwhile 的作用: 循环判断是否将输入值的高低位置颠倒.
把数组倒序输出(不是排序,不能用内置方法)
1 const arr = ["name" , "first" , "5" , 7 , 4 , "2" , 9 ];
输出
1 2 3 4 5 for (let key in arr) { setTimeout (function ( ) { console .log (arr[key]); }, 100 - key); }
(过一面必做题)数组中的重复项最多出现 N 次.(时间复杂度越低得分越高)
1 2 3 4 outputNth ([1 , 1 , 1 , 1 ], 2 ); outputNth ([20 , 37 , 20 , 20 , 21 ], 2 );
1 2 3 4 outputNth ([20 , 37 , 20 , 20 , 21 ], 2 );
输出
第六份
假设有两个数组 a 和 b,数组的内容都是从小到大排好序的数字.现在我们合并这两个数字.并且合并之后的数字也是从小到大排好序的.
请写下你的实现.不要直接使用 js 的 sort 方法,并且确保只使用一次 for 循环.
例如,a=[2,5,10],b=[4,7,9,11],那么合并的结果是 c=[2,4,5,7,9,10,11]
提示,你可以在一个 for 循环中同时控制两个数组下标 i 和 j.比较 a[i]和 a[j].将小的数字加到 c 中,同时更新相应的下标.但是注意各种边界条件.
输出
1 2 3 var arr = a.concat (b); var c = [];
输入一个数字组成的字符串,请把它转化成整数并输出.
例如,输入字符串’123’,输出整数 123.不要使用库函数,函数原型为: function strToInt(str)
输出
1 2 3 var str = "123" ;console .log (+str);console .log (parseInt (str));
合并数组中相邻且重复的元素
说明: 请实现一个函数 merge,传入一个数组,合并数组中相邻且重复的元素,示例:
1 2 3 merge ([3 , 2 , 2 , 4 , 5 , 5 , 6 , 2 , 1 ]); merge ([3 , 2 , 3 ]); merge ([2 , 2 , 3 ]);
输出
请按顺序取出下方 log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 async function async1 ( ) { console .log ("async1 start" ); await async2 (); console .log ("async1 end" ); } async function async2 ( ) { console .log ("async2" ); } console .log ("script start" );setTimeout (function ( ) { console .log ("setTimeout" ); }, 0 ); async1 ();new Promise (function (resolve ) { console .log ("promise1" ); resolve (); }).then (function ( ) { console .log ("promise2" ); }); console .log ("script end" );
输出
1 2 3 4 5 6 7 8 script start async1 start async2 promise1 script end async1 end promise2 setTimeout
第七份
对 MVC,MVVM 的理解.
vue 对于 jquery 在开发上有什么优点
前后端分离的思想了解吗
你上一个项目都用了哪些方法优化 js 的性能
说一下你对 vue 和 veux 的使用方法,vue 的组件复用机制
js 怎样实现一个类,怎么实例化这个类
第八份
下面的函数执行后会输出什么
1 2 3 4 5 6 7 8 9 10 11 12 13 const a = ( ) => { const b = new Promise ((resolve, reject ) => { resolve ("hello world" ); reject ("error" ); }); for (let i = 0 ; i < 10 ; ++i) { b.then ((data ) => { console .log (data + i); }); } }; a ();
输出
1 2 3 4 5 6 7 8 9 10 hello world0 hello world1 hello world2 hello world3 hello world4 hello world5 hello world6 hello world7 hello world8 hello world9
下面的函数执行后会输出什么
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var a = async function ( ) { var b = function ( ) { return new Promise (function (resolve, reject ) { resolve ("hello" ); reject ("error" ); }) .then (function (data ) { console .log (data + i); }) .catch (function (err ) { console .log (err); }); }; for (var i = 0 ; i < 10 ; ++i) { await b (); } }; a ();
输出
1 2 3 4 5 6 7 8 9 10 hello0; hello1; hello2; hello3; hello4; hello5; hello6; hello7; hello8; hello9;
第九份(半截)
什么是延迟加载?
请谈谈 vue 中的 mvvm 模式
vue 中引入组件的步骤
什么是 vuex?为什么要用 vuex?
第十份
请说明值类型和引用类型的区别?那些是值类型,哪些是引用类型?
请简述 private,protected,public,internal 修饰符的访问权限.
简述 session 和 cookie 的作用和区别
请简述 ajax 工作原理和常用的 ajax 框架
css 规范中, .
后面跟一个名称代表什么?#
代表什么?
字符串反转,给定字符串"we;tonight;you;"
,编码实现输出"ew;thginot;uoy;"
第十一份 1 2 3 4 5 6 7 8 9 10 var name = "The Window" ;var obj = { name : "My Obj" , getNameFunc : function ( ) { return function ( ) { return this .name ; }; }, }; console .log (obj.getNameFunc ()());
输出
1 2 obj.getNameFunc ()的this 是obj obj.getNameFunc ()()的this 是window
1 2 3 4 5 6 7 8 9 10 11 var name = "The Window" ;var obj = { name : "My Obj" , getNameFunc : function ( ) { var that = this ; return function ( ) { return that.name ; }; }, }; console .log (obj.getNameFunc ()());
输出
第十二份
vue-router 原理
相关钩子函数
nexttick
css3 常用属性
keep-alive
屏幕滚动
箭头函数什么时候就已经绑定 this
数组方法,map 和 forEach 的区别
route 和 router 的区别
中间件原理
第十三份
虚拟 dom
生命周期,常用的那些,在这些阶段一般都做了什么
Vuex 是干什么的?有哪些属性?怎么操作 state 中的属性
vue-router 有哪些方法?怎么传递参数,获取参数,路由导航钩子有哪几种,全局钩子的移动端适配(媒体查询,flex,viewport,rem)
常用的 ES6 内容.const a ={b:1},改变 b 的值会不会报错.模板字符串,解构赋值,拓展运算符及使用场景.
element-UI 常用的插件,之前项目是怎么搭建的