面试复盘(一)

面试复盘(一)

1.JavaScript求最大公约数和最小公倍数

// 求最大公约数方法:辗转相除法
// 求最小公倍数方法:最小公倍数等于两数之积除以最大公约数
// 使用辗转相除法。即两个数,较大数与较小数相除取余,然后与较小数与余数消除取余,余数与新余数取余…一直到能整除为止,那么最后一个余数就是最大公约数。
    var num1 = prompt('请输入正整数x:');
    var num2 = prompt('请输入正整数y:');
    var num3 = 1;
    if (num1 > num2) {
      var max = num1; //初始化
      var min = num2; //初始化
      while (num3 != 0) {
        num3 = num1 % num2;
        num1 = num2;
        num2 = num3; //辗转相除法求最大公约数
      }
      document.write('最大公约数:' + num1);
      document.write('最小公倍数:' + max * min / num1);
    } else {
      var max = num2;
      var min = num1;
      while (num3 != 0) {
        num3 = num2 % num1;
        num2 = num1;
        num1 = num3;
      }
      document.write('最大公约数:' + num2);
      document.write('最小公倍数:' + max * min / num2);
    }

2.JavaScript判断一个数是不是质数

	//质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数
    function isPrimeNumber(n) {
      if (n < 2) {
        return false;
      } else {
        for (var i = 2; i < n; i++) {
          if (n % i == 0) {
            // 只要有一个能整除,立即判定为不是质数,返回结果 false
            return false;
          }
        }
        // 函数能执行到for循环结束,说明没有执行for循环中return语句
        return true;
      }
    }
    console.log(isPrimeNumber(26));

3.JavaScript打印由星号组成的x层三角形

在这里插入图片描述

	// repeat() 构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。
    const printTriangle = x => {
      for (let i = 1; i <= x; i++) {
        console.log(" ".repeat(x - i) + "*".repeat(2 * i - 1))
      }
    }
    printTriangle(7)

4.JavaScript输出杨辉三角形

在这里插入图片描述

// 杨辉三角形的特点和规律
// 起始行为第0行,第N行为N+1个数
// 从 N >= 2行开始,每一行的数值(不包含两边的数值)都是上一行两个数字的相加。
// 当 J=1 或 J=N+1时, 其值为:1
// 当 J != 1 且 J != N+1时:其值为第N-1行的第J-1个值于 第N-1行的第J个值的和
    var num = Number(prompt('please input'));		//杨辉三角形的层数
    var y = [];										//空数组装杨辉三角形
    // 动态生成二维数组
    for (var i = 0; i < num; i++) {
      y[i] = new Array()
      for (var j = 0; j <= i; j++) {
        y[i][j] = 0;
      }
    }
    // 最外层赋值1
    for (var i = 0; i < num; i++) {					//三角形的每行第一列和最后一列赋值为1
      y[i][0] = 1;
      y[i][y[i].length - 1] = 1;
    }
    // 往三角形[数组]里面填充数字
    for (var i = 2; i < num; i++) {
      for (j = 1; j <= y[i - 1].length - 1; j++) {
        y[i][j] = y[i - 1][j - 1] + y[i - 1][j]
      }
    }
    // 遍历数组,打印出三角形
    document.write('<table><tbody>');
    for (var i = 0; i < num; i++) {
      document.write('<tr>')
      for (j = 0; j <= i; j++) {
        document.write('<td style="width: 20px;height: 20px;text-align: center;">' + y[i][j] + '</td>')
      }
      document.write('</tr>')
    }
    document.write('</tbody></table>');

5.JavaScript分解质因数

在这里插入图片描述

    // 定义一个数组,用来存放因数
    var factorList = [];
    // 定义数组里面数的位置的起始值0
    var a = 0;
    // 定义分解质因数的函数
    function decomposition(num) {
      var i = 2;
      // 如果被分解的数为1、2、3,则直接存入数组,并返回结果
      if ((num == 1) || (num == 2) || (num == 3)) {
        factorList[a++] = num;
        return factorList;
      }
      // 如果被分解的数不是1、2、3,则需要先存下它最小的因数,然后除以它的最小的因数之后再次进行分解
      // num/2 是因为 如果在num的一半大小之前如果没有找到因数,那么之后也不会有,因此不需要后面的部分也进入循环,提升效率
      for (; i <= num / 2; i++) {
        if (num % i == 0) {
          // 存下一个因数(后面跳出循环保证存入的是最小的)
          factorList[a++] = i;
          // 除以因数后,继续进行分解操作
          decomposition(num / i);
          // 跳出循环,确保存入数组的是最小的因数
          break;
        }
      }
      // 存放最后一个质因数
      if (i > num / 2) {
        factorList[a++] = num;
      }
      return factorList;
    }
    // 提示输入一个需要分解质因数的数
    var input = Number(prompt("请输入一个数:"));
    // 传入分解质因数的函数中,调用
    decomposition(input);
    // 定义输出的结果
    result = input + "="
    // 循环将数组中的值,即各质因数放入结果中
    for (var x = 0; x < factorList.length; x++) {
      result += factorList[x];
      // 最后一个质因数放入结果后,不需要*号
      if (x != factorList.length - 1) {
        result += "*";
      }
    }
    // 页面中写出结果
    document.write("<h1>" + result + "</h1>");

6.JavaScript有n个人围成一圈,顺序排号,从第一个人开始报数(从1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号。

    function find(n, m) { //定义一个输出最后一个人下标的方法,两个参数 n表示总人数,m表示报的数
      var arr = []; //定义一个空数组
      for (var i = 0; i < n; i++) {
        arr[i] = true; //建立一个可以有n元素的数组,用来模拟报数的总人数 数组中值为true的表示剩下的人,false表示出去的人
      }
      var total = n,
        index = 0,
        count = 0; //定义三个变量total剩下的的人数,index表示数组的下标,count表示从从0-m报的数的下标
      //循环,直到剩下一个人
      while (total > 1) {
        if (arr[index] == true) {
          count++; //如果数组中的值为true,那么从conut+1
          if (count == m) { //判断报数的人的数是否为m,如果为m, 
            count = 0; // 那么重置count计数器
            arr[index] = false; //报m的人出去,即将他的值改为false
            total--; //将剩下的人数-1
          }
        }
        index++; //下标+1 
        if (index == arr.length) { //如果到了最后一人,
          index = 0; //重置下标为0
        }
      } //循环结束
      //遍历整个数组
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] == true) { //值为true的人就是剩下的最后一个人 
          return i + 1; //因为数组下标是从0开始的,而报数是从1开始的,所以剩下的那个人报的数为数组下标+1 
        }
      }
      return -1; //如果没有返回-1  
    }
    console.log(find(10, 3 )); //调用find()方法

7.JavaScript 1元纸币兑换1分,2分和5分硬币,问组合方式多少种.

    function fn() {
      var num = 100;
      var sum = 0;
      var a = 5;
      var b = 2;
      var c = 1;
      for (var ai = 1; ai <= num / a; ai++) {
        for (var bi = 1; bi <= (num - ai * a); bi++) {
          for (var ci = num; ci > 0; ci--) {
            if (ai * 5 + bi * 2 + ci == 100) {
              sum++
              document.write(sum + "种情况" + ai + "个5分纸币," + bi + "个2分纸币," + ci + "个1分纸币<br />")
            }
          }

        }
      }
      document.write(sum + "种情况")
    }
    fn()

8.vue cil快速创建项目

vue create newProject

在这里插入图片描述)
在这里插入图片描述

9.JS 原型对象的constructor属性

constructor属性

10.new操作符干了什么

在JavaScript中,new操作符用于创建一个给定构造函数的实例对象

  1. new创建了一个空白对象{}
  2. 调用constructor执行,替换里面this指向为(空白对象{})
  3. 执行constructor,向空白对象上添加属性和值
  4. “默认”把this对象返回到调用的地方

11.es6基本数据类型

Number,String, Null, Undefined, Symbol, Boolean

12.原型与原型链

原型与原型链

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

東三城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值