• 小米-前端面经


    数据结构

    二分查找,返回查询元素的索引
    function binary_search(arr,low,high,key){
        if(low > high){
            return -1;
        }
        var mid = parseInt((high+low)/2);
        if(arr[mid]  ==key){
            return mid;
        }else if(arr[mid] >key ){
            high = mid -1;
            return binary_search(arr,low,high,key);
        }else if(arr[mid] >key){
            low = mid +1;
            return binary_search(arr,low,high,key);
        }
    }
    var arr = [1,2,3,4,5,6,7,8,9,10,11,27,44,86];
    var result0 = binary_search(arr, 0, 13, 44);
    console.log(result0);
    
    写一个排序算法(快排)
    var quickSort = function(arr) {
      if (arr.length <= 1) { return arr; }
      var pivotIndex = Math.floor(arr.length / 2);
      var pivot = arr.splice(pivotIndex, 1)[0];
      var left = [];
      var right = [];
      for (var i = 0; i < arr.length; i++){
        if (arr[i] < pivot) {
          left.push(arr[i]);
        } else {
          right.push(arr[i]);
        }
      }
      return quickSort(left).concat([pivot], quickSort(right));
    };
    
    内存中堆和栈的区别

    0.申请方式和回收方式不同
    1.申请后系统的响应
    2.申请效率的比较

    找一个数组中最长的连续递增的子区间长度[5,2,4,7,4,6,2]----->[2,3,6] = 3

    利用动态规划来求解

    求x的y次方

    指数运算符

    console.log((() => {
        let x = 2;
        let y = 3;
        x **= y;
        return x;})()); 
    
    

    Math.pow():Math.pow(x, y)

    前端部分

    1. 用css3 实现一个未知宽高的div居中

    1,组合使用display:table-cell和vertical-align、text-align,使父元素内的所有行内元素水平垂直居中(内部div设置display:inline-block即可

    2,translate()函数是css3的新特性,在不知道自身宽高的情况下,可以利用它来进行水平垂直居中。
    当使用:top:50%, left:50%,是以左上角为原点,故不处于中心位置。
    translate(-50%, -50%)作用是,往上(X轴),左(Y轴)移动自身长度的50%,以使其居于中心位置。
    3,用弹性布局实现垂直左右居中
    display:flex; 设置.wrap为弹性布局
    justify-content:center;定义项目在主轴(水平方向)上居中对齐
    align-items:center;定义项目在交叉轴(垂直方向)上居中对齐

    2. 写一段js继承的代码

     /* ------------------原型链继承------------------ */ 
     // 父类构造函数 
     function SuperType() { 
          this.property = true; } 
     // 父类原型方法 
     SuperType.prototype.getSuperValue = function () { 
          return this.property; } 
     //子类构造函数 function SubType() { 
          this.subproperty = false; }
    // 子类原型对象指向父类实例实现继承 
    SubType.prototype = new SuperType();
    SubType.prototype.getSubValue = function () { 
           return this.subproperty; } var sub = new SubType(); 
           console.log(sub.getSuperValue());
    /* ------------------原型链继承------------------ */
    

    3. html+css定义一个三列的布局

    1.  使用float实现三列左右固定宽高,中间自适应宽度

    
    .left {  float: left;   100px;  background: red;  }   
    .center {  background: blue;  margin-left: 100px;  margin-right: 100px;  }  
    .right {  float: right;   100px;  background: yellow;  }
    

    2.利用绝对定位

          .main-left{
                 300px;
                height: 500px;
                background-color: #98FF1A;
                float: left;
                position: absolute;
                left: 0;
            }       
            .main-center{
                background-color: #8E8DCC;
                height: 500px;
            }
            .main-right{
                 300px;
                height: 500px;
                background-color:#7CC0FF;
                float: right;
                position: absolute;
                right: 0;
            }
    

    3,flex布局实现

    .left {  100px;  background: red; }   
    .center { background: blue; flex: 1;}    
    .right {  100px;  background: yellow;}
    

    4. 页面优化的方法

    1. 避免head标签js堵塞
    2. 减少head里面的css资源
    3. 延迟加载图片,优化图片
    4. 去掉不必要的插件
    5. 最小化重定向
    6. 利用浏览器缓存

    5. git和svn的区别

    1. SVN是集中式版本控制系统,版本库是集中放在中央服务器的
    2. Git是分布式版本控制系统,它没有中央服务器的,每个人的电脑就是一个完整的版本库。
    3. GIT把内容按元数据(中介数据,描述数据的数据)方式存储,而SVN是按文件
    4. git和svn是通过.git和.svn文件,.git只是在本地的版本库的目录下存在,而.svn存在于每一个文件夹,当我们不需要版本控制的时候,要删除.svn很费时。

    6. 输入一个网址后,计算机是怎么处理的

    DNS 解析:将域名解析成 IP 地址
    TCP 连接:TCP 三次握手
    发送 HTTP 请求
    服务器处理请求并返回 HTTP 报文
    浏览器解析渲染页面
    断开连接:TCP 四次挥手

    7. 如何用js动态添加

    功未成,业未就,不敢休!
  • 相关阅读:
    典型案例道出“服务台”的价值
    银监会拟允许银行理财产品直接投资
    解读中国版存款保险制度:差别费率+强监管色彩
    央行牵头互联网金融“顶层设计”引业内关注
    央行降息 是农村互联网金融的救命稻草?
    历史上最伟大的 12 位程序员
    年关将至业内警示P2P跑路风险
    央行启动我国征信自律组织研究课题
    windows下开启redis拓展
    php使用curl新增微信临时素材(上传图片)
  • 原文地址:https://www.cnblogs.com/codehao/p/14781496.html
Copyright © 2020-2023  润新知