聪明核桃教育面试题

1. 算法题:一个n位数的字符,由0~9之间的随机数组成,如何把字符里所有为0的数,全部移动到字符的末尾显示?

//思路:用正则全局匹配,把为0的字符全部替换为空,再计算0的个数,添加到尾部即可
let Number = '1002343400434';
function getSort(str){
//把字符串里为0的数都替换成空
let str1 = str.replace(/0/g,'');
//获取原始字符串的长度
let count = str.length;
//获取去除0之后的字符串的长度
let count2 = str1.length;
//两者之差就是字符为0的个数
let num0 = count - count2;
//定义一个变量来代表字符末尾0的值
let sum = 1;
//遍历为0的个数,有多少个就让多少个10相乘
for(let i=0;i<num0;i++){
sum = sum*10;
}
//最后把除去0的字符,乘以sum,即为最终的值
let res = str1 * sum;
console.log(res);
}
getSort(Number);

2. 说说闭包的含义?

  使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

  闭包有三个特性:

    1.函数嵌套函数 

    2.函数内部可以引用外部的参数和变量 

    3.参数和变量不会被垃圾回收机制回收


3.说说你对原型链的理解?
  每个构造函数都有一个porototype的属性,该属性指向一个对象,此对象可以被重新定义,实例化后的对象上都有一个__proto__的属性,该属性也指向原型对象,
  原型对象上的属性和方法能被所有实例化对象所继承;

4. 说说你对作用域链的理解?
  作用域链的最前端始终是当前执行的代码所在环境的变量对象(如果该环境是函数,则将其活动对象作为变量对象),下一个变量对象来自包含环境(包含当前还行环境的环境),
  下一个变量对象来自包含环境的包含环境,依次往上,直到全局执行环境的变量对象。全局执行环境的变量对象始终是作用域链中的最后一个对象。

  大白话说意思就是:假如一个函数内要使用一个变量,但当前作用域里并没有声明此变量,那么它会跟随作用域链向上依次查找,先查找当前函数所处的作用域,如果没有再继续
  向外层查找当前函数所处作用域的函数的所处作用域,直到全局执行环境的变量对象,全局执行环境的变量对象始终是作用域链中的最后一个对象;

5. 说说你对VUE的理解?
  1.组件化,便于维护和管理;
  2.代码重用性高;
  3.面向数据,做好数据的管理,vue底层自动做页面的渲染;
  
6. 如果在代码里直接用script标签引用一个域名,会不会存在跨域问题?
  什么是同源策略?同源策略是由Netscape提出的的一个著名的安全策略,现在所有支持javascript的浏览器都会使用这个策略,
  所谓同源就是指,域名、协议、端口号相同,当在一个浏览器打开两个网站的页面时,某一个网站在执行js脚本时会检查访问的资源是否属于本域范围,
  只有本域范围内的资源才能被访问。
  
  通过script标签跨域,我们通过xhr对象请求不同域上的资源是不可以的但是却可以通过script标签引用不同域上的文件,jsonp就是利用这个来实现的。

7. 事件捕获和事件冒泡?如果事件捕获和冒泡同时发生,会先处理哪个(事件流)?
  先捕获阶段-->目标阶段-->冒泡阶段
8. 在之前的项目中遇到过哪些问题?
  1. 兼容性问题?----》说几个;
  2. 跨域的问题;
  3. 踩过的坑;
  
9. ajax的底层实现?
  第一步:实例化ajax对象;
  第二步:使用open方法,确定请求方式和路径;
  第三步:使用send方法发送请求;
  第四步:使用监听事件onreadystatechange(),判断状态码:readystate == 4 && status == 200;

10. 响应状态码常见的都有哪些?分别是什么含义?
  200  表示从客户端发来的请求在服务器端被正常处理了。
  404 表示服务器端无法找到请求的资源。
  500 表示服务器端在执行请求时发生了错误。
  301 表示永久重定向。
  302 表示临时重定向。

11. 单页面应用?如果在单页面里做跳转用什么实现?












猜你喜欢

转载自www.cnblogs.com/Riona-C/p/9153243.html
今日推荐