秋招的时候做了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

 

6CPU利用率与并发进程数的关系是:( 

A.  进程数多时,提高并发进程数,可提高CPU利用率

B.  局部性特征的下降会导致缺页率上升和CPU利用率下降

C.  并发进程的内存访问会增加了访存的局部性特征

D.  并发进程导致内存访问减小

参考答案:B

并发进程数存在相互促进和制约的关系进程数少时,提高并发进程数,可提高CPU利用率,故而A选项错误;

并发进程的内存访问会降低访存的局部性特征,C选项错误;

 

7、一个子串由7A7B组成,且满足所有的前缀子串中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集合中迭代器Iteratorfail-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.  SynchronizedLock都是可重入锁。

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最大允许分配的非堆内存,按需分配

-XXSurvivorRatioEden区和Survior区的占用比例.

我们只需要知道Survior区有两个,就是图中的S0S1,而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.  ListSet都可以包含重复元素的有序集合

B.  ListSet都是有序集合

C.  List中最多只能有一个空元素

D.  Set中最多只能有一个空元素

正确答案:ABC

20、下列关于Oracle Hotspot Java虚拟机的说法之中正确的是:(  

A.  如果一个类显式地overrideObject类的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 ,sessionStoragelocalStorage,以下说法正确的有:(  

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、请阐述Java8Java语法上的主要改进。

参考答案:

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、搜狗汪仔机器人在参加一站到底节目录制时,被问到一个问题:“对任意长度字符串,删除其中任意的NN>=0)个字符,能形成多少种不同的子字符串呢?” 请使用JavaScript编码扩展Stringdelete方法帮助汪仔解决这个问题。

 

测试用例:

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