博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
撩课-Web大前端每天5道面试题-Day38
阅读量:6305 次
发布时间:2019-06-22

本文共 2259 字,大约阅读时间需要 7 分钟。

1.JavaScript实现二分法查找?

二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程可以分为以下步骤:(1)首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步。(2)如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作。(3)如果某一步数组为空,则表示找不到目标元素。 代码: // 非递归算法 function binary_search(arr, key) {   var low = 0,   high = arr.length - 1;   while(low <= high){   var mid = parseInt((high + low) / 2);       if(key == arr[mid]){           return  mid;       }else if(key > arr[mid]){           low = mid + 1;       }else if(key < arr[mid]){           high = mid -1;       }else{           return -1;        }   }}; var arr = [1,2,3,4,5,6,7,8,9,10,11,23,44,86]; var result = binary_search(arr,10); alert(result); // 9 返回目标元素的索引值 // 递归算法 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,23,44,86]; var result = binary_search(arr, 0, 13, 10); alert(result); // 9 返回目标元素的索引值复制代码

2.你所了解到的Web攻击技术?

(1)XSS(Cross-Site Scripting,跨站脚本攻击): 指通过存在安全漏洞的Web网站注册用户的浏览器内运行 非法的HTML标签或者JavaScript进行的一种攻击。(2)SQL注入攻击(3)CSRF(Cross-Site Request Forgeries,跨站点请求伪造): 指攻击者通过设置好的陷阱, 强制对已完成的认证用户进行非预期的 个人信息或设定信息等某些状态更新。复制代码

3.写一个function,清除字符串前后的空格?(兼容所有浏览器)

var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/; var email = "example@qq.com"; console.log(reg.test(email));  // true复制代码

4.有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?

这个问题要倒过来看,要到达n级楼梯,只有两种方式,从(n-1)级 或 (n-2)级到达的。所以可以用递推的思想去想这题,假设有一个数组s[n], 那么s[1] = 1(由于一开始就在第一级,只有一种方法),s[2] = 1(只能从s[1]上去 没有其他方法)。那么就可以推出s[3] ~ s[n]了。下面继续模拟一下, s[3] = s[1] + s[2],因为只能从第一级跨两步, 或者第二级跨一步。function cStairs(n) {    if(n === 1 || n === 2) {        return 1;    } else {        return cStairs(n-1) + cStairs(n-2)    }}复制代码

5.递归设计。 实现一个函数,给该函数一个DOM节点,函数访问其所有子元素(所有子元素,不仅仅是直接子元素),每次访问子元素的时候,并为其传一个callback?

//访问一个DOM tree,是一个经典的深度优先搜索的算法function Traverse(DOM,callback) {    callback(DOM);    var list = DOM.children;    Array.prototype.forEach.apply(list,(item)=>{        Traverse(item,callback); //递归    })}复制代码

转载地址:http://lebxa.baihongyu.com/

你可能感兴趣的文章
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>
用sqlplus远程连接oracle命令
查看>>
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>
自动生成四则运算题目
查看>>
【翻译】使用新的Sencha Cmd 4命令app watch
查看>>
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
查看>>
因为你是前端程序员!
查看>>
数据库设计中的14个技巧
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在GCE上安装Apache、tomcat等
查看>>