来也科技面试--小白面试日记

我们所度过的每个平凡的日常,也许就是连续发生的奇迹。

1.自我介绍,说得有点少,下面应该再准备的多一点。

2.然后问了我不是本专业的,有没有学过数据结构这些。之后就问了算法题这些。

3.冒泡排序的时间复杂度为多少:O(n*n)  然后写一下冒泡排序的代码

var arr = [4, 3, 8, 9, 5, 2, 10, 0];
console.log('arr:' + arr);    
init(arr);
console.log('Arr:' + arr);    
function init(arr){
    for(i=0;i<arr.length-1;i++){    
        for(j=0;j<arr.length-i-1;j++){
            if(arr[j]>arr[j+1]){
                var temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
        console.log('newArr:' + arr); 
    }
}

4.快排的时间复杂度为相比较传统做法用嵌套循环排序,时间复杂度由O(n^2)变为O(logn),当问题规模n变大的时候,就能体现快速排序算法的效率了。

参考链接:https://www.cnblogs.com/ybygb-geng/p/9355425.html

var arr1 =[2,3,1,4,6,8];
function quickArray(arr){
  var left = [],right =[];
  if(arr.length <= 1){
      return arr;
    }
  var index = Math.floor(arr.length/2);
  var p = arr.splice(index,1)[0];
  for (var i=0;i<arr.length;i++){
    if(arr[i] <= p){
       left.push(arr[i]);
    }else{right.push(arr[i]);  
    }
}
   return quickArray(left).concat(p,quickArray(right));
};
console.log(quickArray(arr1));

5.快速排序的情况好坏分析:

快速排序在一趟排序中将数字分割成为独立的两部分,左边一部分小于轴值,右边一部分大于轴值,轴值的选择理论上可以选择数组中的任何一个数组,我们在这里考虑选择第一个数字。然后对两部分序列重复进行上述操作,快速排序可以用递归来完成

时间复杂度:最好情况O(n*logn)——Partition函数每次恰好能均分序列,其递归树的深度就为.log2n.+1(.x.表示不大于x的最大整数),即仅需递归log2n次; 最坏情况O(n^2),每次划分只能将序列分为一个元素与其他元素两部分,这时的快速排序退化为冒泡排序,如果用数画出来,得到的将会是一棵单斜树,也就是说所有所有的节点只有左(右)节点的树;平均时间复杂度O(n*logn)

6.快速排序稳定吗?算法稳定性

参考链接:https://blog.csdn.net/gaoxueyi551/article/details/89413936

                  https://www.jianshu.com/p/08a90b29caa6

6.斐波那契数列算法

function fb1(n){
    if(n <= 2){
        return 1;    
    }else{
        return fb1(n-1) + fb1(n-2);
    }
}

递归优化:

function fb2 (n , ac1 = 0 , ac2 = 1) {
    if( n <= 1) 
    {return ac1};
    else{
        return fb2 (n - 1, ac2, ac1 + ac2);
    }
  }

参考链接:https://blog.csdn.net/qq_39300332/article/details/80000837

 https://blog.csdn.net/u014399368/article/details/80526876?utm_medium=distribute.pc_relevant_t0.none-task-blog-      BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

7.递归优化的方法

参考链接:https://blog.csdn.net/HEYUJIEBOY/article/details/76692870

递归会出现的问题:

参考问题:https://blog.csdn.net/qq_36748278/article/details/54707109

8.js实现算法:找出数组中和为给定值的两个元素

function same(arr, num)
  {
    for (var i =0 ;i<arr.length;i++)
    {
        for (var j = i+1;j<arr.length;j++)
        {
            if (arr[i]+arr[j]==num)
            {
                console.log('数组中两个元素和为'+num+'的两个数为:'+arr[i]+'和'+arr[j]);
                break;
            }
        }
    }
  }

参考链接:https://blog.csdn.net/m0_37686205/article/details/90113817

9.node.js事件循环

参考链接:https://www.jianshu.com/p/9faada4cd977

10.promise理解

转:https://www.jianshu.com/p/1b63a13c2701

11.登陆过程的整个流程

用户名密码等通过浏览器给服务器发送请求,看是否匹配,如果匹配后。。。。。(有待研究)

转;https://blog.csdn.net/Good_Luck_Li/article/details/90402363

12.ajax请求的五个步骤

转:https://www.cnblogs.com/tfxz/p/12701681.html

13.ajax的状态

转:https://blog.csdn.net/lh95lbw/article/details/81178285

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值