搜狗2018秋招Java笔试试题

一、不定项选择

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

个人资料
crazybean
等级:8
文章:61篇
访问:15.7w
排名: 5
推荐
欢迎关注 “BAT笔试面试” 微信公众号
全栈面试题,你想要的都在这^_^
上一篇: 搜狗2018秋招前端试题
下一篇:搜狗2018秋招Java笔试题(二)
猜你感兴趣的圈子:
搜狗笔试面试圈
标签: 参考答案、nums、toy、plays、wangzai、面试题