昨天晚上(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. Thrift-RPC client in Flume

    Get RpcClient from RpcClientFactory with Reflection programming Message or Event definition in Flum ...

  2. AndroidStudio安装教程

    Android studio安装与配置 1.首先下载Android studio安装包,可以从http://www.android-studio.org/ 2.下载好该安装包之后,点击进行安装,依次出 ...

  3. 向Github提交更改的代码

    更改了本地的某一文件的代码,那么如何覆盖Github上的同一文件代码呢?请看以下步骤: 1.先用 git status 看你更改了哪些文件: 2.然后 git add 你想要提交的更改的文件 或者 g ...

  4. Session和Cookie详解(1)

    面试常问的有关session和cookie的问题: 1.session在分布式环境下怎么解决 2.集群下如何保证session踩中 3.cookie的大小 4.服务器怎么识别一个用户的 5.sessi ...

  5. dctcp-ns2-patch

    diff -crbB ns-allinone-2.35/ns-2.35/queue/red.cc ns-2.35/queue/red.cc *** ns-allinone--- :: --- ns-- ...

  6. editplus 格式化 js、html、xml、css

    没有文件扩展”js”的脚本引擎的问题的解决办法 解决办法如下: 打开注册表编辑器,定位"HKEY_CLASSES_ROOT" > ".js" 这一项,双击 ...

  7. error C2027: use of undefined type 'COleDispatchImpl'的解决方法

    解决办法:在资源管理视图中删除CMDTARG.CPP文件,然后重新编译 设置断点后,F5调试运行,调试运行后,然后关编辑器提示保存对CMDTARG.CPP的修改,点了保存,出现error C2027: ...

  8. Spark资源调度分配内幕天机彻底解密:Driver在Cluster模式下的启动、两种不同的资源调度方式源码彻底解析、资源调度内幕总结

    本课主题 Master 资源调度的源码鉴赏 资源调度管理 任务调度与资源是通过 DAGScheduler.TaskScheduler.SchedulerBackend 等进行的作业调度 资源调度是指应 ...

  9. July 18th 2017 Week 29th Tuesday

    My heart is stronger now that you are in it. 我的心里有了你,从此变得更强大. You will no longer feel lonely if ther ...

  10. SharpZipLib压缩解压

    一.介绍 SharpZipLib是一个完全由C#编写的ZIP,GZIP,Tar和BZIP2 Library,可以方便的支持这几种格式的压缩和解压缩. https://github.com/icshar ...