• 【神策数据面试】手撕题


    翻转字符串

    例如 sensorsdata@cn 翻转后变为nc@atadsrosnes

    function reverseWords(source){
    let result = ";
    //TODO
    return result;
    }

      function reserveWords(source) {
                let result = '';
                for (let i = 0; i < source.length; i++) {
                    let s = source.charAt(source.length - i - 1);
                    result += s;
                }
                return result;
            }
            console.log(reserveWords('sensorsdata@cn'));
    

    实现深度拷贝cloneDeep

    function cloneDeep(source){
    //TODO .
    return target;
    }

    实现深拷贝

      function cloneDeep(source) {
                var target = Array.isArray(source);
                //进行深拷贝不能为空,并且是对象或者Object
                if (source && typeof source === 'object') {
                    for (key in source) {
                        if (source.hasOwnProperty(key)) {
                            if (source[key] && typeof source[key] === 'object') {
                                target[key] = cloneDeep(source[key]);
                            } else {
                                target[key] = source[key];
                            }
                        }
                    }
                }
                return target;
            }
    

    手写快排

    1、快速排序的基本思想:

    快速排序所采用的思想是分治的思想。所谓分治,就是指以一个数为基准,将序列中的其他数往它两边“扔”。以从小到大排序为例,比它小的都“扔”到它的左边,比它大的都“扔”到它的右边,然后左右两边再分别重复这个操作,不停地分,直至分到每一个分区的基准数的左边或者右边都只剩一个数为止。这时排序也就完成了。

    2、快速排序的三个步骤:

    (1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”(pivot)

    (2)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比基准大

    (3)递归地对两个序列进行快速排序,直到序列为空或者只有一个元素。

      function sort(arr, left, right) {
                if (left >= right) {
                    return;
                }
                var i = left;
                var j = right;
                var symbol = arr[left];
                while (i != j) {
                    while (i < j && arr[j] >= symbol) {
                        j--;
                    }
                    while (i < j && arr[i] <= symbol) {
                        i++;
                    }
                    if (i > j) {
                        let temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
                var temp1 = arr[left];
                arr[left] = arr[i];
                arr[i] = temp1;
                sort(arr, 0, i - 1);
                sort(arr, i + 1, right);
            }
    
            var arr = [1, 5, 3, 9, 6, 5];
            sort(arr, 0, arr.length - 1);
            console.log(arr);
    

    将一段嵌套数组,变成JSON数据?

    <body>
        <p id="demo"></p>
        <button onclick="run()"></button>
        <p id="demo1"></p>
        <script>
            var demo = document.getElementById('demo');
            var demo2 = document.getElementById('demo1');
            var arr = [1, 2, 3, 4, 5];
            demo.innerHTML = arr;
            function run() {
                demo2.innerHTML = 'JSON Object' + JSON.stringify(Object.assign({}, arr))
            }
        </script>
    </body>
    

    嵌套数组 转json

    给一个变量,输出它的类型?

       <script>
            console.log(Object.prototype.toString.call(1));
            console.log(Object.prototype.toString.call('1'));
            console.log(Object.prototype.toString.call([1]));
            console.log(Object.prototype.toString.call(function() {
                console.log('你好');
            }));
            console.log(Object.prototype.toString.call(true));
            console.log(Object.prototype.toString.call(undefined));
            console.log(Object.prototype.toString.call(null));
        </script>
    

    三栏布局,左右两边载滚轮滚动的时候保持不变

        <div class="container">
            <div class="left"></div>
            <div class="right"></div>
            <div class="main">
                <ul>
                   <li>1</li>
                   ...
                   <li>100</li>
                </ul>
            </div>
        </div>
    
     <style>
            /* 第一种 浮动+margin */
            
            .left {
                position: fixed;
                left: 0;
                float: left;
                width: 200px;
                background-color: pink;
                height: 500px;
            }
            
            .right {
                position: fixed;
                right: 0;
                float: right;
                width: 200px;
                background-color: yellow;
                height: 500px;
            }
            
            .main {
                /* width: 200px; */
                background-color: green;
                margin-left: 200px;
                margin-right: 200px;
                height: 2000px;
            }
        </style>
    
  • 相关阅读:
    阿里巴巴Java面试题、笔试题(含答案)
    PyTorch:GPU的使用
    mysql学习使用
    第20章 使用Spring进行事务管理(二)
    TorchDrug教程--分子生成
    字符串哈希
    MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)(五)
    web前端 html+css+javascript 绿色的随行旅游网页设计实例 企业网站制作
    元宇宙发展下的虚拟时尚
    230. Kth Smallest Element in a BST
  • 原文地址:https://blog.csdn.net/qq_40992225/article/details/126962217