360企业安全java开发面试题_360集团2016JAVA研发工程师内推笔试题

本文深入探讨了TCP三次握手过程中的关键细节,包括确认号的意义及工作原理,并通过实例解析了CIDR网络地址配置。此外,还详细介绍了Java中HashMap的工作机制、equals方法的重写技巧、数据类型的自动转换与编译错误处理,以及try-catch-finally语句的执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

725d4be730d7e7eaced237da364f0fb7.png

解析:

再TCP中,ack确认号代表希望得到的序号,而在本题中第三次握手发送的序列号为1000,由此可以说明第二次握手的确认号为1000,同时由于第三次握手的确认号为2000,由此可以说明希望收到的序号为2000,那么证明第二次发送的序号为1999,所以选择B

5.下列TCP连接建立过程描述正确的是:

答案:

65ea163426c768cd398a3176fc0d0da9.png

解析:

A.TCP客户端向服务端发送SYN保文端,客户进入SYN_SENT状态,不是服务端进入该状态

B.服务端在收到客户端发来的ACK确认后,同时向客户端发回ACK确认后服务端才会进入SYN_RCVD状态

D.服务端未收到客户端确认将会超时重传

6.属于网络112.10.200.0/21的地址是()

答案:

ca41a7c9e6163c6b5331ef3178fca008.png

解析:

该网络使用了无分类编址CIDR,/21表示前21位为网络号,下面给出图解,如图主机号为110时IP地址为A项

4c716df3a232250ff765b806b4f1ea56.png

7.以下java程序代码,执行后的结果是()

java.util.HashMap map=new java.util.HashMap();

map.put("name",null);

map.put("name","Jack");

System.out.println(map.size());

答案:

fe9ec4f5adc33dfaa30aa1290995678c.png

解析:

在JAVA中map的一个键只能够出现一次,也就是说当有一个相同的键时会进行替换,所以这个name键所对应的值为Jack,所以map大小为1

8.以下java程序代码,执行后的结果是()

public class Test {

public static void main(String[] args) {

Object o = new Object() {

public boolean equals(Object obj) {

return true;

}

};

System.out.println(o.equals("Fred"));

}

}

答案:

9419c2938ac5fc19506851aa1ee22f56.png

解析:

上述代码中重写了equals方法,方法接收参数直接返回true,不进行判断,所以选择B

9.代码片段:

byte b1=1,b2=2,b3,b6;

final byte b4=4,b5=6;

b6=b4+b5;

b3=(b1+b2);

System.out.println(b3+b6);

答案:

79119e568f34d9fedc054e007de5d8c4.png

解析:

在java中没有使用final修饰的变量会被自动转型,byte-->int,而使用了final修饰就不会被转型,所以b6=b4+b5;是正确的,而b3=(b1+b2); 由于b1,b2没有使用final修饰在运算过程中会被自动转型为int,结果为int类型,赋值给byte,大范围赋值给小范围变量会出现编译错误。

10.下面代码运行结果是()

public class Test{

public int add(int a,int b){

try {

return a+b;

}

catch (Exception e) {

System.out.println("catch语句块");

}

finally{

System.out.println("finally语句块");

}

return 0;

}

public static void main(String argv[]){

Test test =new Test();

System.out.println("和是:"+test.add(9, 34));

}

}

答案:

79ddeadc48cb7a2c01e4ac8098bb873f.png

解析:

在try...catch...finally语句中,finally无论是否发生异常都会被执行,并且发生在return之前。

1.finally{}代码块比return先执行。

2.多个return是按顺序执行的的,多个return执行了一个后,后面的return就不会执行了。

3. 记住一点,不管有不有异常抛出, finally都会在return返回前执行。

11.以下情况下不一定出现TCP分节RST的情况是:

答案:

46ad32914e267a38e02512ce0ac6a716.png

解析:

对于这个题目,没有仔细了解过TCP的RST重置的出现条件,下面是看他人给的解释,需要记一下(以下四种情况会发送RST包)

四种情况会发送RST包:

1、端口未打开

2、请求超时

3、提前关闭

4、在一个已关闭的socket上收到数据

12.一个数据库中现有A,B,C,D,E,F六个语句但目前这个数据库是不协调的,必须删除某些语句才能恢复数据库的协调性。已知:(1)如果保留语句A,那么必须保留语句B和C。(2)如果保留语句E,则必须同时删除语句D和语句C。(3)只有保留语句E,才能保留语句F。(4)语句A是重要的信息,不能删除。以上各项如果为真,则以下哪项一定为真?

答案:

5bc1649a90a36cf5f7db6cd7bfe4e00c.png

解析:

这个题目是一个简单的逻辑题目,可以使用离散数学的知识,也可以直接推断一下即可

13.下列关于静态工厂和工厂方法表述错误的是:()

答案:

d51dba96c8ce1b6abcd9ec7a0ee010ac.png

解析:

开闭原则:对扩展开放,对修改封闭。静态工厂增加需要是修改源代码,对修改不封闭,不符合开闭原则。

14.设有一个用数组Q[1..m]表示的环形队列,约定f为当前队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为()

答案:

d63b798d8ab52f29a6386150e3a64d46.png

解析:

这个题目是由于不认真导致的,用尾减去头,加m的原因是防止尾大于头,(rear - front + m)% m

15.以下程序是用辗转相除法来计算两个非负数之间的最大公约数:

long long gcd(long long x,long long y){

if(y==0)

return x;

else return gcd(y,x%y);

}

答案:

221ae477da383ac90ba86f1e368263b1.png

解析:

辗转相除法时间复杂度为logn

16.计算斐波那契数列第n项的函数定义如下:

int fib(int n){

if(n==0)

return 1;

else if(n==1)

return 2;

else

return fib(n-1)+fib(n-2);

}

若执行函数调用表达式fib(10),函数fib被调用的次数是:

答案:

a058e6c7fa7f39ed3e79470414fca8dc.png

解析:

C(0) = 1

C(1) = 1

C(2) = 1+1+1 = 3

c(3) =  3+1+1 = 5

c(4) =  5+3+1 = 9

...

c(9) =  67+41+1 =  109

c(10) = 109+67+1 = 177

17.设图G的相邻矩阵如下图:则G的顶点数和边数分别为:

0 1 1 1 1

1 0 1 0 0

1 1 0 1 1

1 0 1 0 1

1 0 1 1 0

答案:

51c11a84c00ec1934544c0c773da084b.png

解析:

图的邻接矩阵是一个长宽相等的矩阵,边长代表顶点的个数,矩阵中的1代表两点之间有边相连,矩阵中一共有16个1,所以只有8条边,因为1--2相连,那么2--1也一定相连,可以看一下数据结构就可以理解了。

小白创作,大佬勿喷,谢谢合作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值