昨天晚上(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. Web Workers:Web Worker是HTML5提供的一个JavaScript多线程解决方案,其实就是在Javascript单线程执行的基础上,开启一个子线程,进行程序处理,而不影响主线程的执行,当子线程执行完毕之后再回到主线程上,在这个过程中并不影响主线程的执行过程。但是子线程完全受主线程的控制,切子线程不能操作DOM,只有主线程可以操作DOM,关于web workers的使用可以参考这篇文:https://segmentfault.com/a/1190000012528806

4. 生成器函数Generator :https://www.cnblogs.com/wangfupeng1988/p/6532713.html

5. 以下代码输出啥?

var Func = () => console.log('a');
setTimeout(Func,0);
console.log('change');
Func = () => console.log('another a');

 依次输出:change、a 。原因:【JS运行机制】JS代码先执行同步代码,将第二行的setTimeout中的异步任务放进异步队列,等待同步任务执行完了再推入event loop执行,故先输出第三行的“change”,而后为何输出“a”而不是“another a”呢? 我理解的是,第二行放入异步队列里的是包括Func的函数体的要执行的代码,切断了Func变量和它的引用关系,所以即使第四行已经改变了Func函数的函数体也不会对异步队列中的代码产生影响。(纯个人理解,如果有误烦请指出)

6.

var setPerson = function(person) {
person.name = 'kevin';
person = {name:'rick'};}
var person = {name:'alan'};
setPerson(person);
alert(person.name); //"kevin"

在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部;当在函数内部重写引用类型的形参时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕后立即被销毁。

7.未完待续。。

2018 CVTE 前端校招笔试题整理的更多相关文章

  1. web前端校招笔试题集锦

    写一个求和的函数sum,达到下面的效果 // Should equal 15 sum(1, 2, 3, 4, 5); // Should equal 0 sum(5, null, -5); // Sh ...

  2. 剑指Offer——CVTE校招笔试题+知识点总结(Java岗)

    剑指Offer(Java岗)--CVTE校招笔试题+知识点总结 2016.9.3 19:00参加CVTE笔试,笔试内容如下: 需要掌握的知识:Linux基本命令.网络协议.数据库.数据结构. 选择题 ...

  3. Java工程师笔试题整理[校招篇]

    Java工程师笔试题整理[校招篇]     隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...

  4. 剑指Offer——腾讯+360+搜狗校招笔试题+知识点总结

    剑指Offer--腾讯+360+搜狗校招笔试题+知识点总结 9.11晚7:00,腾讯笔试.选择题与编程.设计题单独计时. 栈是不是顺序存储的线性结构啊? 首先弄明白两个概念:存储结构和逻辑结构. 数据 ...

  5. 剑指Offer——京东校招笔试题+知识点总结

    剑指Offer--京东校招笔试题+知识点总结 笔试感言 经过一系列的笔试,发觉自己的基础知识还是比较薄弱的,尤其是数据结构和网络,还有操作系统.工作量还是很大的.做到精确制导的好方法就是在网上刷题,包 ...

  6. 剑指Offer——美团内推+校招笔试题+知识点总结

    剑指Offer--美团内推+校招笔试题+知识点总结 前言 美团9.9内推笔试.9.11校招笔试,反正就是各种虐,笔试内容如下: 知识点:图的遍历(DFS.BFS).进程间通信.二叉查找树节点的删除及中 ...

  7. Web前端面试笔试题总结

    最近一段时间要毕业了,忙着找工作,见过不少笔试面试题,自己总结了一些加上网上找的一些整合了一下.答案暂时都东拼西凑出来了,但是还是先不发出来,一方面是答案并不是唯一的并且自己的答案不能保证对,另一方面 ...

  8. 北京Java笔试题整理

    北京Java笔试题整理 1.什么是java虚拟机?为什么ava被称作是"平台无关的编程语言? 答:Java虚拟机可以理解为一个特殊的"操作系统",只是它连接的不是硬件,而 ...

  9. 转:2018最全Redis面试题整理

    Java面试----2018最全Redis面试题整理 1.什么是Redis? 答:Redis全称为:Remote Dictionary Server(远程数据服务),是一个基于内存的高性能key-va ...

随机推荐

  1. 一周一个小demo — vue.js实现备忘录功能

    这个vue实现备忘录的功能demo是K在github上找到的,K觉得这是一个用来对vue.js入门的一个非常简单的demo,所以拿在这里共享一下. (尊重他人劳动成果,从小事做起~  demo原git ...

  2. 139.00.004 Git学习-远程仓库之Github

    参考Github官方HelloWorld入门教程 "有了远程仓库,妈妈再也不用担心我的硬盘了."--Git点读机 本章开始介绍Git的杀手级功能之一(注意是之一,也就是后面还有之二 ...

  3. WCF传输协议

    典型传输协议下的(1)HTTP和HTTPSHTTPS(安全超文本传输协议).它是为了在WWW上解决安全的数据传输而设计的.HTTS是采用了SSL的HTTP,SSL是一种加密协议.它们默认的端口号分别是 ...

  4. 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型

    以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...

  5. 如何阅读 Redis 源码?ZZ

    原文链接 在这篇文章中, 我将向大家介绍一种我认为比较合理的 Redis 源码阅读顺序, 希望可以给对 Redis 有兴趣并打算阅读 Redis 源码的朋友带来一点帮助. 第 1 步:阅读数据结构实现 ...

  6. cocos2d-x 3.1 编译脚本android-build.py

    写在前面: 前段时间下载了cocos2d-x 3.1,按照官网的教程,配置环境,编译打包,走了一遍,感觉不错,顺便发现其中用了很多python的脚本文件,比如今天要说的android-build.py ...

  7. QueryDSL

    QueryDSL只是通用的查询框架,不支持写操作 查询出来的结果是List,我们不得不做额外的工作将它转化为领域实体

  8. 设计模式:观察者(Observer)模式

    设计模式:观察者(Observer)模式 一.前言   观察者模式其实最好的名称应该是“发布订阅”模式,和我们现在大数据之中的发布订阅方式比较类似,但是也有区别的地方,在上一个设计模式,我们学习的是仲 ...

  9. ZT Factory Pattern

    图中的虚线箭头表示依赖关系

  10. [python]emlog相册插件getshell exploit

    昨天本站转载了emlog相册插件的漏洞分析文章,当然也有html版的getshell代码,喜欢的同学们可以直接用昨天文章中分享的代码.为了练习python,小弟用python又重写了一次,喜欢的同学们 ...