顺丰科技2019秋招Java开发工程师选择题合集

1.二叉排序树的链表节点定义如下:

typedef struct BiTnode{
    int key_value;
    struct BiTnode *L,*R;/*节点的左、右树指针*/
}

请补充完整查找键值key的函数。

BSTree lookup_key(BSTree root,int key)
{
    if() return NULL;
    else 
        if(key == root->key_value)
            return root;
        else if(key > root->key_value)
            return (1);
        else
            return (2);
}

A、(1)lookup_key(root->R,key);(2)lookup_key(NULL,key)
B、(1)lookup_key(root->R,root.key_value);
(2)lookup_key(root->L,root.key_value)
C、(1)lookup_key(root->L,key);(2)lookup_key(root->R,key)
D、(1)lookup_key(root->R,key);(2)lookup_key(root->L,key)
正确答案: D

2.对序列(12,18,22,38,39,49,79,89)进行排序,最不适合的算法是()
A、冒泡排序;B、快速排序;C、归并排序;D、插入排序
正确答案: B
解析:
快排不适合对基本有序的数据集合进行排序
冒泡排序和快速排序都是O(n^2),之所以选快排而不是冒泡,可能是因为常数因子的问题,快排相对复杂,因此直观理解它的常数因子就更大。
越有序,则需要的时间越长。

3.调用函数时,入参及返回地址使用了()
A、队列;B、多维数组;C、顺序表;D、栈
正确答案: D

4.设有递归算法如下,最终打印结果是()

#include<stido.h>
 int foo(int a ,int b)
 {
     if (b == 0) return 0;
     if (b %2 == 0) return foo(a+a,b/2);
     return foo(a+a,b/2)+a;    
 }
 void main()
 { 
   printf("%d"foo(1,3));
 }

A、3;B、4;C、5;D、6
正确答案: A

5.请指出堆排序、选择排序、冒泡排序、快速排序、的时间复杂度()
正确答案:nlogn、n^2、同左、nlogn

6.What is Static Method in Java()
A、It is a method which belongs to the class and not to the object(instance)
B、A static method can access only static data. It can not access non-static data (instance variables)
C、A static method can call only other static methods and can not call a non-static method from it.
D、A static method can not be accessed directly by the class name and doesn’t need any object
正确答案: A B C

7.此代码片段输出正确的值是()

public class CharToString {
 public static void main(String[] args)
 {
  char myChar = 'g';
  String myStr = Character.toString(myChar);
  System.out.println("String is: "+myStr);
  myStr = String.valueOf(myChar);
  System.out.println("String is: "+myStr);
 }
}

正确答案:
String is: g
String is: g

8.一个空栈,如果有顺序输入:a1,a2,a3。。。an(个数大于3),而且输出第一个为an-1,那么所有都出栈后,()
A、输出的最后元素一定为an
B、输出的最后元素一定为a1
C、不能确定元素a1~an-2在输出顺序
D、an-2一定比an-3先出
正确答案:D

9.利用栈完成数制转换,将十进制的169转换为八进制,出栈序列为()
答案:251
解析:
169/8 = 21 余1
21/8 = 2 余5
2/8 = 0 余 2
余数倒过来 251

10.主机IP为200.15.13.13/23,其子网掩码是()
A、255.255.249.0;B、255.255.2410
C、255.255.253.0;D、255.255.254.0
答:D
解析:
/23的意思是前23位是1,即最后(4*8-23)=9位是0,所以最后16位是11111110 00000000,可知是255.255.254.0

11.总部给某分公司分配的网络地址是172.16.2.0/24,该分公司有三个部门,每个部门计算机不多于30台,在网络配置时,进行子网划分,可以使用的子网掩码是()
A、255.255.255.128;B、255.255.255.192
C、255.255.255.224;D、255.255.255.240
答案:B、C
解析:
172.16.2.0/24为B类地址,所以子网掩码肯定是255.255开头,因为该地址有24为的网络号,也就是剩下的子网掩码是:
11111111.00000000,又因为有三个部门,留下两位进行表示,且这两位最大为11,所以有11111111.11000000(255.192),又因为30的二进制至少用5位来表示,4位(1111)的最大值才15,5位的最大值31,所以只留下4位时为11111111.11110000,(255.240),所以为大于等于192小于240.

12.以下叙述中,正确的有( )
A、单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
B、集成测试是基于软件需求说明书的黑盒测试,是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确
C、确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
D、系统测试的主要目的是检查软件单位之间的接口是否正确,主要是针对程序内部结构进行测试,特别是对程序之间的接口进行测试。
正确答案: A、C
解析:B和D反了

13.关于链表,正确的是()
A、无需实现估计空间;B、支持随机访问
C、增删不必挪动元素;D、所需空间与线性表长度成正比,并且地址连续
E、插入一个元素所需挪动元素的平均个数为n/2
正确答案:A、C

14.以下关于链表和数组说法正确的是()
A、数组从栈中分配空间,链表从堆中分配空间
B、数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)
C、数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n)
D、对于add和remove,ArrayList要比LinkedList快
正确答案: A B C

15.甲乙丙3个进程对某类资源的需求分别是7个、8个、3个。且目前已分别得到了3个、3个和2个资源,若系统还至少能提供( )个资源,则系统是安全的。
A、1;B、4;C、2;D、8
正确答案:C

16.32位处理器是指处理器的()是32位的
A、控制总线;B、数据总线;C、地址总线;D、所有的总线
正确答案: B

17.以下关于TCP和UDP说法正确的是()
A、TCP数据传输慢,UDP数据传输快
B、TCP通过滑动窗口机制进行拥塞控制
C、UDP缓冲区小于报文长度,则会丢失报文
D、DNS协议用于域名解析,默认23端口
正确答案: A C
解析:UDP通过滑动窗口机制进行拥塞控制,DNS默认端口53

18.某打车公司将驾驶里程(drivedistanced)超过5000里的司机信息转移到一张称为seniordrivers 的表中,他们的详细情况被记录在表drivers 中,正确的sql为()
A、insert into seniordrivers
drivedistanced>=5000 from drivers where
B、insert seniordrivers (drivedistanced) values from drivers where drivedistanced>=5000
C、insert into seniordrivers
(drivedistanced)values>=5000 from drivers where
D、select * into seniordrivers from drivers where drivedistanced >=5000
正确答案: D
解析:

SQL SELECT INTO 语句可用于创建表的备份复件。
SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
SQL SELECT INTO 语法
您可以把所有的列插入新表:
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename
或者只把希望的列插入新表:
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename
SQL SELECT INTO 实例 - 制作备份复件
下面的例子会制作 "Persons" 表的备份复件:
SELECT * INTO Persons_backup FROM Persons
IN 子句可用于向另一个数据库中拷贝表:
SELECT * INTO Persons IN 'Backup.mdb' FROM Persons
如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:
SELECT LastName,FirstName
INTO Persons_backup
FROM Persons

19.关于SpringMVC,以下说法错误的是?()
A、SpringMVC的核心入口是DispatcherServlet
B、@RequestMapping注解既可以用在类上也可以用在方法上
C、@PathVariable作用是取出url中的模板变量作为参数
D、controller默认是单例,通过@Scope(“prototype”)注解改为多例,成员变量共享
正确答案: D
解析:@Scope(“prototype”)表示每获取一个bean创建一个对象。这虽然看起来是多例。但成员变量并不共享。要想成员变量共享,可设置为“session”或“globalSession”

20.文法G[E]:

1.	E-> T|E+T|E - T
2.	T-> F|T*F|T/F
3.	F ->(E)|i

以下论述正确的是()
A、该文法的开始符号是E
B、该文法的终结符号集合为{+、-、、/、(、)}
C、该文法的非终结符号集合为{E、T、F}
D、句型T+T
F+I的简单短语为i、T*F、第一个T
正确答案: A C D

21.off-heap是指那种内存()
A、JVM GC能管理的内存
B、JVM进程管理的内存
C、在JVM老年代内存区
D、在JVM新生代内存
正确答案: B
解析:
堆外内存意味着把内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理(而不是虚拟机)。不属于老年代和新生代。
JVM GC回收堆和方法区

22.下面程序的运行结果()

List<String> aa = new ArrayList<String>();
aa.add("F1");
aa.add("F2");
aa.add("F3");
for (String temp : aa) {
    if ("F3".equals(temp)) {
        aa.remove(temp);
    }
}

for (String temp : aa){
     System.out.println(temp);
}

A、抛异常;B、F1F2;C、F1F2F3;D、F1
正确答案: A
解析:
就这么说吧,对于集合的三种遍历方式删除:
1.普通for循环:可以删除
2.Iterator遍历:可以删除
3.增强for循环foreach:不能删除

23.下面程序的运行结果()

Object obj=new Object();
List aList=new ArrayList();
List bList=new LinkedList();

long t1=System.currentTimeMillis();
for(int i=0;i<50000;i++){
    aList.add(0,obj);
}
long t2=System.currentTimeMillis()-t1;

t1=System.currentTimeMillis();
for(int i=0;i<50000;i++){
    bList.add(0,obj);
}
long t3=System.currentTimeMillis()-t1; 

A、t2;B、t2=t3;C、不确定;D、t2>t3
正确答案: D
解析:
ArrayList内部是动态数组实现,在增加空间时会复制全部数据到新的容量大一些的数组中。而LinkedList内部为双向链表,可以按需分配空间,扩展容量简单,因此LinkedList用时少。

24.以下那个不属于Spring Scope(作用域)的范围()
A、prototype;B、request;C、application;D、session
正确答案: C

25.下面程序的运行结果()

public class ClassA {
    static int count = 0;
    static {
        count++;
        System.out.println("A");
    }
    public ClassA() {
        System.out.println("B");
    }
}
public class ClassB {
    static {
        ClassA t2;
        System.out.println("C");
    }
    public static void main(String[] args) {
        Class c1;
        Class c2;
        Class c3;
        try {
            c1 = ClassA.class;
            c2 = Class.forName("ClassA");
            ClassA a = new ClassA();  
            c3 = a.getClass();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return;
        }
        if (c2 == c1&& c1 == c3) {
            System.out.println("D");
        } else {
            System.out.println("E");
        }
        System.out.println(ClassA.count);
    }
}

A、C A B D 1;B、C A B D 2
C、A C B D 2;D、C A B E 1
E、A C B E 3
正确答案: A
解析:
这道题主要考的类的加载机制:
1.被标明为启动类的类(即包含main()方法的类)要初始化,所以ClassB最先初始化
2.ClassB没有父类,所以初始化自身的静态变量和静态块赋值(按照声明顺序),输出“C”
3.ClassA a = new ClassA(); 初始化ClassA,输出“AB”
4.因为类的加载信息只会在永久代里留存一份,所以c1,c2,c3实际上共用同一个ClassA.class对象,所以输出“D”
5.静态块static{}只会执行一次,所以count=1

26.开闭原则相关的面向对象设计原则()
A、里氏代换原则(Liskov Substitution Principle LSP)
B、依赖倒转原则(Dependence Inversion Principle)
C、接口隔离原则(Interface Segregation Principle)
D、复用原则
正确答案: A B C
解析:
面向对象共有六大原则:开闭原则、单一职责原则、里式替换原则、依赖倒置原则、接口隔离原则、迪米特法则。
开闭原则:开闭原则的定义是软件中的对象(类,模块,函数等)应该对于扩展是开放的,但是对于修改是关闭的。
单一职责原则:就一个类而言,应该仅有一个引起他变化的原因。也就是说一个类应该只负责一件事情。
里式替换原则:“子类能够替换基类,否则不应当设计为其子类。”也就是说,子类只能去扩展基类,而不是隐藏或覆盖基类。
依赖倒置原则:模块间的依赖是通过抽象来发生的,实现类之间不发生直接的依赖关系,其依赖关系是通过接口是来实现的。
接口隔离原则:客户端不应该依赖他不需要的接口。
迪米特法则:一个对象应该对其他对象保持最小的了解。

27.AOP技术优势在于()
A、通过接口、抽象及组合增强对象内部能力
B、将核心关注点与横切关注点完全隔离
C、有利增强业务安全性
D、让一些公共逻辑更好的分布在对象核心逻辑中
正确答案: B

28.下面的选项中哪些属于工厂模式()
A、静态工厂模式;B、工厂方法模式
C、抽象工厂模式;D、简单工厂模式
正确答案: B C D

29.已知tm_employee表中具有默认约束df_adress,删除该约束的语句为()

A、alter talbe tm_employee drop constraint df_adress
B、alter talbe tm_employee remove constraint df_adress
C、alter talbe tm_employee delete constraint df_adress
D、remove constraint df_adress from talbe tm_employee
正确答案: A
解析:
删除约束的语句是:
alter table 表名 drop constraint 约束名

30.关于数据库三级模式结构说法正确的是()
A、三级模式包括外模式,内模式,物理模式
B、内模式对应的是物理级
C、外模式是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示
D、物理模式又称存储模式,对应于物理级
正确答案: B C
解析:
①模式(schema):
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
②外模式(external schema):
外模式也称子模式(subschema)或用户模式,它是数据库用固话(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
③内模式(internal schema):
内模式也称存储模式(storage schema),一个数据库只有一个内模式。它是数据物理存储和存储方式的描述,是数据在数据库内部的组织方式。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值