/*面试题:随机给出一串整数,取最长的连续数组,如[6,7,11,9,12,14,13,15] 得出[11,12,13,14,15]*/ function maxContinueArray(input){ if(!input&&input.length===0)return; var tempArray=[],maxArray=[],tempInt,nextInt,index,size,flag=false; var sort_array=input.sort(function(a,b){return a-b;}); for(index=0,size=sort_array.length;index<size;index++){ tempInt=Number(sort_array[index]); nextInt=Number(sort_array[index+1]);//数组溢出的时候返回NaN tempArray.push(tempInt); if(flag=(tempInt+1)===nextInt?false:true){ if(Math.max(tempArray.length,maxArray.length)===tempArray.length){ maxArray=tempArray.slice(0); } tempArray=[]; } } return maxArray; }
/*面试题:大整数相加,支持超出整数类型的长度,用数组表示*/ function plus(input,input2){ if(input===undefined||input.length===0)return; if(input2===undefined||input2.length===0)return; var str1=String(input),str2=String(input2),result=''; result=str1.length>str2.length?calcu(str1,str2):calcu(str2,str1); function calcu(m,s){ var a,b,c,d=0,ret=[],i=0,sSize=s.length; for(var index=m.length-1;index>=0;index--){ ++i; a=m[index]; b=s[sSize-i]||0; c=Number(a)+Number(b)+d; if(c<10){ ret.push(c); d=0; }else{ ret.push((c-10)); d=1; } } return ret.reverse().join(''); } return result; }
今天去面试了,结果题目做得一团遭, 两条编程题直接用笔写,还真是有难度, 写了1个钟,结果回家在firefox上测试,全部输出错误, 题目一加了一些多余的判断,导致了输出永远是第一个连续数组。
题目二, 压根就不用看,进位的时候,我都忘记去减10, 还有计算出来的结果忘记逆序输出, oh, my god, 学艺不精。
上网看了人家一篇大整数相加,一测试,跟我写的一样的不够健壮。
function add(a, b){ var SPLITE_LENGTH = 3; var aL = String(a), bL = String(b); var resout = '', c = 0; while(aL != 0 || bL != 0){ var aR = aL.slice(-SPLITE_LENGTH), bR = bL.slice(-SPLITE_LENGTH); var t = String(parseInt(aR) + parseInt(bR) + c); resout = t.slice(-SPLITE_LENGTH) + resout; // 字符拼接 c = parseInt(t.slice(0, -SPLITE_LENGTH)||'0'); aL = aL.slice(0, -SPLITE_LENGTH)||'0'; bL = bL.slice(0, -SPLITE_LENGTH)||'0'; console.log(resout, aL, bL, c); } if(c){ resout = String(c) + resout; } return resout; }
测试用例:
1.大正整数
plus(123151541512315150, 48154546104815460)
输出: "171306087617130610"
add(123151541512315150, 48154546104815460)输出: "171306087617130610"
2.负数plus(-123151541512315150, 48154546104815460)
输出: "NaN171306087617130610"
add(-123151541512315150, 48154546104815460)
输出:"NaN171306087617130610"
3.输出小数:
plus(-12315154151231.5150, 48154546104815460)
输出:"NaN17130608761713NaN976"
add(-12315154151231.5150, 48154546104815460);
输出:"NaN171306087616846976":
相关推荐
分享前端面试题集锦
适合人群:最近在准备面试,具备一定编程基础,工作1-3年的研发人员, 题目举例:1、 rem em vw vw 百分比区别 2、 移动端如何适配 3、场景题(两个盒子,左边固定宽,右边自适 应,你能想到几种方法) 4、css 选择...
大厂面试题,岗位前端开发工程师,阿里旗下,蚂蚁金服,一面原题,共5道在线编程题,不含答案!仅供参考学习!涉及防抖、进制转换、模板引擎、事件订阅、数组转换等。
最近3年面试总结,技术栈从angular1涵盖到angular2,vue。不仅包括各框架,还有基础知识,包括html,css,css3,一些前端的数据结构,高级JavaScript编程思想。
web前端开发面试题-易莱胜web前端开发培训面试题.doc
自己收集的一些前端面试题以及解答,希望会派上用场,原生JS,Vue,React居多,非常全面,物超所值
前端面试题及答案汇总HTML.doc
包含的领域有HTML,CSS,JS,ES6,Vue,React,小程序,常见编程题,以及其他比如webpack,git方面的面试题,还有面试官可能会提到的问题,都是前端必备的知识,适用于初级前端求职者们以及前端初学者们
JS、Vue、React、性能优化、前端工程化、浏览器、HTML、CSS各部分面试题,背完就能面试,面试就能通过,通过就能上岗。内容贯通前端学习过程,涵盖各大部分,细化到细节,对知识点、问题进行详细解答,有效解决大家...
Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户...它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。
内容概要:本资源提供了一系列精心挑选的前端面试题,旨在帮助广大前端开发者系统复习和巩固基础知识,深入理解前端技术栈,以及提升解决实际问题的能力。题目涵盖了HTML、CSS、JavaScript的基础与进阶知识,同时也...
前端面试题(免积分下载)
前端工程师面试题汇总.docx
前端笔试面试题目总结.docx
BAT前端H面试题大全.docx
WEB前端开发面试题集锦.doc
WEB前端开发工程师面试题.doc
该文档是汇总的web前端面试笔试常考的基础类和编程类,对面试笔试有帮助。
这篇文章为面试者提供了关于JavaScript常考面试题的详细解析。文章内容包括JavaScript基础概念、语法和概念、DOM操作、高级特性以及常见面试题及解答。文章旨在帮助面试者更好地准备JavaScript相关的面试,提高对...
包含第一部分html,第二部分CSS,第三部分JavaScript,第四部分Jquery,第五部分Bootstrap,第六部分微信小程序,第七部分webpack,第八部分常用编程题,第九部分其他常问内容如负载均衡、CDN、内存泄露、babel原理、js...