58前端笔试,与大家共勉
秋招的时候做了58前端的试卷,本着有题共享,共同进步的精神,特意贴出,供各位牛友学习。
其中若有不对的答案敬请指出!
不定项选择
1、以下没有用栈来实现的应用场景是:( )
A. 表达式求值
B. 树的节点的深度优先遍历
C. 进程调度
D. 函数调度
参考答案:C
2、给定一个数组2 3 5 6 1 7 8 4 9,建立初始堆(最小堆)后,数组序列是多少?( )
A. 1 2 5 4 3 7 6 8 9
B. 1 2 5 6 3 7 8 4 9
C. 1 2 3 6 5 7 8 4 9
D. 1 2 5 4 3 7 8 6 9
参考答案:D
3、给定8个同样形状的硬币和一个天平,其中有一个硬币比其他硬币都重,找到该硬币需要的最少次数:( )
A. 3
B. 4
C. 2
D. 1
参考答案:A
4、如下算法的时间复杂度是:( )
int func(vector &nums){
int n = nums.size();
if(n == 0){
return 1;
}
for(int i=0;i<n;i++){
while(nums[i]>0 && nums[i]<=n && nums[i]!=i+1){
int tmp = nums[i];
if(tmp==nums[num[i]-1]){
break;
}
nums[i] = nums[num[i]-1];
nums[tmp-1] = tmp;
}
}
for(int i=0;i<n;i++){
if(nums[i]!=i+1){
return i+1;
}
}
return n+1;
}
A. O(n^2)
B. O(n!)
C. O(n)
D. O(n^3)
正确答案:A
5、如果需要对10W个英文单词进行前缀匹配检索,下面哪种数据结构最合适:( )
A. AVL树
B. Trie树
C. B+树
D. 哈希表
参考答案:B
6、CPU利用率与并发进程数的关系是:( )
A. 进程数多时,提高并发进程数,可提高CPU利用率
B. 局部性特征的下降会导致缺页率上升和CPU利用率下降
C. 并发进程的内存访问会增加了访存的局部性特征
D. 并发进程导致内存访问减小
参考答案:B
并发进程数存在相互促进和制约的关系进程数少时,提高并发进程数,可提高CPU利用率,故而A选项错误;
并发进程的内存访问会降低访存的局部性特征,C选项错误;
7、一个子串由7个A和7个B组成,且满足所有的前缀子串中A的个数大于等于B的个数,问这样的子串有多少个:( )
A. 428
B. 429
C. 430
D. 431
正确答案:B
8、在关键字随机分布的情况下,二叉查找树长度与哪些查找相当:( )
A. 二分查找
B. 顺序查找
C. 插值查找
D. 斐波那契查找
参考答案:A
9、一个有500*400的稀疏矩阵,有20个非零元素,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是:( )
A. 134
B. 120
C. 126
D. 124
参考答案:C
一个非零元用(i,j, num)表示。则一个非零元用6个字节,20个就是120个字节。
另外,还需要一个头结点,用来(500,400,20)用来表示矩阵的行列数和非零元个数。
答案是120+6=126,正确答案为C选项。
10、函数F(n)=F(n-1)+n+1(n>1)的递归终止条件是:( )
A. F(0)=0
B. F(1)=1
C. F(1)=0
D. F(0)=1
正确答案:B
11、Java程序进行调优,会关注一下两个目标:响应能力(responsiveness)和吞吐量(throughput)。关于这两项目标描述错误的是:( )
A. 吞吐量关注在一个特定时间段内应用系统的最大工作量
B. 对响应能力要求很高的系统,较大的停顿时间是不可接受的
C. 提高响应能力期望程序或系统对请求的响应时间尽可能短
D. 更重视吞吐量的系统,比重视响应能力的系统更加不能接受较长的停顿时间
参考答案:D
12、java集合中迭代器Iterator的fail-fast(快速失败)机制,抛出的是什么异常?( )
A. ConcurrentModificationException异常
B. SecturityException异常
C. NullPointerException异常
D. ClassCastException异常
参考答案:A
13、可通过编译的语句有哪些?( )
A. int x[][] = new int[1][1];
B. byte x[][] = new byte[][];
C. short x[1][1] = new short[][];
D. long []x[]=new long[1][1];
参考答案:A
14、关于JAVA类加载,正确的是:( )
A. 某个类可能由于被不同的类调用而被加载多次
B. 类加载器的体系并不是“继承”体系,而是一个“委派”体系
C. NoClassDefFoundEror表示在编译时这个类是不能够被找到的
D. 在生成某个类的.class文件时,该类被加载到JVM中
参考答案:B
15、关于java锁说法正确的是:( )
A. Synchronized只能作用于方法,不可以在代码块上使用。
B. Synchronized通过使用对象监视器由JVM实现。
C. Synchronized和Lock都是可重入锁。
D. 使用Lock的获取锁方法后,最好使用finally代码块释放锁。
参考答案:B、C、D
16、
public class Toy {
private String name;
static {
System.out.println("Initializing");
}
Toy() {
System.out.println("Building");
}
public void setName(String name){
this.name = name;
}
public String playToy(String player){
String msg = buildMag(player);
System.out.println(msg);
return msg;
}
private String buildMag(String player){
String msg = player+" plays "+this.name;
return msg;
}
public static void main(String[] args){
Toy toy = new Toy();
toy.setName("ball");
toy.playToy("wangzai");
}
}输出结果为( )
A. Building
Initializing
wangzai plays ball
B. Initializing
Building
wangzai plays ball
C. Building
wangzai plays ball
D. Initializing
wangzai plays ball
参考答案:B
17、JVM内存配置参数如下:
-Xmx2048m -Xms2048m -Xmn1024m -XX:MaxPermSize=256m -XXSurvivorRatio=2,其最小内存值和Survivor区分大小分别是:( )
A. 2048m, 512m
B. 1024m, 256m
C. 2048m, 256m
D. 1024m, 512m
参考答案:C
首先必须知道几个参数的含义:
-Xmx :堆的最大值,本题为2048M
-Xms :堆的最小值,本题为2048M
-Xmn :堆年轻代大小,本题为1024M
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
-XXSurvivorRatio:Eden区和Survior区的占用比例.
我们只需要知道Survior区有两个,就是图中的S0和S1,而Eden区只用一个, -XXSurvivorRatio参数是Eden区和单个Survior区的比例,所以应该有(2+1+1)*Survior=1024m,故而Survivor区大小为256M.
参考:http://blog.csdn.net/crazylzxlzx/article/details/52210061
18、以下哪种方式会导致对应线程让出CPU:( )
A. 调用sleep函数
B. 抛出RuntimeException
C. 提高其他线程的调用优先级
D. 增加子线程并调度执行子线程
参考:http://www.ppkao.com/daan/1939379/3A5825E23711EF85BB47D24A4FE680D9
正确答案:A
19、Java数据结构中列表(list)和集合(Set)下面说法错误的是?( )
A. List和Set都可以包含重复元素的有序集合
B. List和Set都是有序集合
C. List中最多只能有一个空元素
D. Set中最多只能有一个空元素
正确答案:ABC
20、下列关于Oracle Hotspot Java虚拟机的说法之中正确的是:( )
A. 如果一个类显式地override了Object类的finalize方法,那么这个finalize方法最多只能被Java虚拟机调一次。
B. 在同一个Java虚拟机之中,一个class文件只能被加载一次。
C. Java虚拟机只有在堆空间不足的情况下,才会触发垃圾回收。
D. 对于分代的垃圾回收算法,在进行新生代(young generation)垃圾回收的时候,只需扫描新生代的内存区域,在进行老年代(old generation)垃圾回收的时候,只需要扫描老年代的内存区域。
正确答案:AB
21、<div style=”padding-bottom:50%”>中的50%应该如何计算?( )
A. 父级元素高度的50%
B. 父级元素宽度的50%
C. 自身高度的50%
D. 0
正确答案:B
22、html结构如下:
<div></div>
<p></p>
<p></p>
<p></p>
以下哪些选择器能够选中第一组p标签?( )
1. div + p
2. p:first-child
3. p:first-of-type
4. div~p
5. p:nth-child(2)
A. 12
B. 135
C. 345
D. 24
参考答案:A
23、以下哪些数组方***更改现有数组返回?( )
A. Array.prototype.concat
B. Array.prototype.slice
C. Array.prototype.sort
D. Array.prototype.splice
正确答案:CD
24、下列代码输出的是什么?( )
function fun(n,o){
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
}
}
var a = fun(0).fun(1).fun(2).fun(3);
A. Undefined, 1, 2, 3
B. Undefined, 0, 1, 1
C. Undefined, 0, 0, 0
D. Undefined, 0, 1, 2
参考答案:D
参考:https://segmentfault.com/a/1190000004187681
25、下面哪些是Flex布局的项目属性:( )
A. flex-flow
B. align-self
C. align-items
D. flex-grow
正确答案:BD
26、下列关于使用MVVM的特性,正确的是:( )
A. 模块开发。开发人员可以专注与业务逻辑和数据的开发(ViewModel)。设计人员可以专注于界面(View)的设计
B. 可重用性。可以把一些视图的逻辑放在ViewModel里面,让很多View重用这段视图逻辑。
C. 低耦合。View可以独立于Model变化和修改
D. MVVM是一种使用模型-视图-控制器设计创建Web应用程序的模式。
参考答案:A、B、C
D选项说的是MVC模式,不是MVVM模式。
27、关于cookie ,sessionStorage和localStorage,以下说法正确的有:( )
A. sessionStorage仅当前用户logout或者手动清除缓存时才失效
B. localStorage作用域都不受限制,可以跨域访问
C. localStorage是持久化的本地存储
D. sessionStorage是会话级别的存储
参考答案:C、D
参考:http://www.cnblogs.com/caiyezi/p/5619506.html
28、HTTP状态码表示暂时性转移的是:( )
A. 302
B. 301
C. 304
D. 200
参考答案:A
29、以下代码运行的结果是:( )
function Animal(name){
this.name = name;
}
Animal.prototype = {
getName:function(){
return this.name;
}
}
var myDog = new Animal(‘dog’);
var getName = myDog.getName;
getName(‘cat’);
A. undefined
B. “”
C. “dog”
D. “cat”
参考答案:C
参考:http://www.cnblogs.com/lwzz/archive/2013/03/03/2941743.html
30、以下代码的运行结果是:( )
for(var i=1;i<=3;i++){
setTimeout(function(){console.log(i);},0);
}
A. 444
B. 333
C. 123
D. 111
正确答案:A
问答题
1、请阐述Java8在Java语法上的主要改进。
参考答案:
Java 8: 语言一个大的变化,增加了一些新的概念和功能:
默认的接口方法
Lambda表达式
引用方法
可重复的注解
数据流
2、HTML+CSS+Javascrip实现以下功能:当用户点击页面里所有a标签时,如果其链接里面包含数字,则点击该链接时提示用户“该链接存在风险,是否继续点击?” 用户只有点击确认才打开该链接
参考答案:
<html xmlns="http://www.w3.org/1999/xhtml">
<script language=javascript>
function firm(str1)
{
//定义字符串
//var str1 = "http://www.sogou1.com";; //第一个字符串,仅有数字。
//定义验证规则,由于字符串数字和字母的顺序可能不同。
//也有可能字母和数字中间还包含了其他字符。故将验证规则分开定义。
var regNumber = /\d+/; //验证0-9的任意数字最少出现1次。
//验证第三个字符串
if (regNumber.test(str1)) {
//利用对话框返回的值 (true 或者 false)
if(confirm("该链接存在风险,是否继续点击?"))
{
//如果是true ,那么就把页面转向thcjp.cnblogs.com
location.href=str1;
}
}else{
//如果是true ,那么就把页面转向thcjp.cnblogs.com
location.href=str1;
}
}
window.onload = function(){
var as = document.querySelectorAll('a') ;
for( var i = 0 ; i < as.length ; i++ ){
var a = as[ i ] ;
var origin = a.href ;
a.href='javascript:void 0;' ;
a.dataset.origin = origin ;
a.onclick = function(){
firm( this.dataset.origin ) ;
}
}
}
</script>
<BODY>
<a href="http://www.baidu.com"">www.baidu.com</a>
<H4>"-----------------"</H4>
<a href="http://www.163.com"">www.163.com</a>
</BODY>
</HTML>
3、搜狗汪仔机器人在参加一站到底节目录制时,被问到一个问题:“对任意长度字符串,删除其中任意的N(N>=0)个字符,能形成多少种不同的子字符串呢?” 请使用JavaScript编码扩展String的delete方法帮助汪仔解决这个问题。
测试用例:
function test(){
return’sogou’.delete(0)===1;
}
备注:
本题为前端编程题,不会解答。
编程题:
圆周上两点间的距离
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 30720KB;其他语言 555008KB
题目描述:
定义圆周上两点的距离s为这两点之间的劣弧对应的圆心角度数(0<=s<=180),现输入圆周上的n个点(n>=2),以角度a表示其位置(0<=a<360),输入按a从小到大排序。求最远的一对点之间的距离。
输入
第一行为点个数n,后跟n行,每行一个双精度浮点数,表示点的角度(小数点后保留8位),例如输入样例中为4个点的输入:
输出
输出最远的一对点之间的距离(双精度浮点数,小数点后保留8位)和'\n'换行符。例如输入样例中,10.00000000与183.00000000两个点之间的距离为173.00000000,大于10.00000000与198.0000000之间的距离172.00000000,所以应输出:
173.00000000
样例输入
4
10.00000000
180.00000000
183.00000000
198.00000000
样例输出
173.00000000