昨天晚上(7.20)做了CVTE的前端笔试,总共三十道题,28道多选题,2道编程题 。做完了之后觉得自己基础还是不够扎实,故在此整理出答案,让自己能从中得到收获,同时给日后的同学一些参考。
首先说一下两道肥肠简单的编程题:
1.请实现这样一个函数,输入参数为一个长度为2n的整数数组,以两个整数一组的方式将数据分组,并使每组数组最小值相加为最大,输出这个最大值。
输入[1,4,3, 2],输出为4
输入[1,5,7,9, 4, 12],输出为15
思路:把数组按大小排序然后相邻两项分为一组,取每组较小的一个数相加即可。
function arrApart(arr){ arr.sort( function(a,b){return a-b} ); var len = arr.length; var result = 0; for(i = 0 ; i < len ; i=i+2){ result += arr[i]; console.log(arr[i]); } return result } console.log("result: "+arrApart([3,1,4,7,2,12,6,8])) //result: 18
2. 用flex实现一个三栏布局,左右定宽,中间自适应。这个就很简单了。
<style> body{ margin: 0; padding: 0; } .box{ display: flex; } .left{ width: 200px; height:400px; background: red; } .middle{ flex-grow:1; height:400px; background: yellow; } .right{ width: 120px; height:400px; background: blue; } </style> </head> <body> <div class="box"> <div class="left"></div> <div class="middle"></div> <div class="right"></div> </div> </body>
下面是小题(摘录):
1. 以下代码输出啥?
for(var i={j:0};i.j< 5;i.j++){ (function(i){ setTimeout(function(){console.log(i.j)},0); })(JSON.parse(JSON.stringify(i))); }输出啥?//0,1,2,3,4
for循环体内创建了一个自执行的匿名函数,立即把每一个 i 以 JSON.parse(JSON.stringify(i)) 处理之后按值传递给匿名函数的参数。这里的每个i是个对象,JSON.stringify()是从一个对象中解析出字符串,即JSON.stringify(i) === ‘{"j": 0 }‘,而JSON.parse()是从一个字符串中解析出json对象,即JSON.parse(‘{"j": 0 }‘) === { j : 0 }, 一波操作之后传的其实还是i,然后再一个个把i.j 的值打印出来,结果是0,1,2,3,4
2. 已知一算术中缀表达式为A-(B+C)*D+F/G ,则可算出后缀表达式为( )
所谓前缀、中缀、后缀表达式,它们都是对表达式的记法,因此也被称为前缀记法(波兰式)、中缀记法和后缀记法(逆波兰式)。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。
变换步骤如下:a. 先按优先级给每个表达式加括号: (A-(((B+C)*D)+(F/G))) b. 将每个括号内的运算符丢到括号后面:((A-((B+C)*D))+(F/G)) c. 去掉括号:ABC+D*-FG/+ (中缀变前缀就是把运算符丢到括号前面)
3. 未完待续...
原文地址:https://www.cnblogs.com/YiNongLee/p/9344878.html