笔试/面试学习之路(一)

笔试连着挂,真的需要调整自己了吧。闭关一段时间,会有好的结果。


题目练习笔记:

1.度为2的节点个数 = 度为0的节点个数 - 1

 

2.public class SendValue{

   public String str="6";

   public static void main(String[] args) {

       SendValue sv=new SendValue();

       sv.change(sv.str);

       System.out.println(sv.str);

    }

   public void change(String str) {

       str="10";

    }

}

 

输出为6

change方法里面是将传入的参数修改成10,但是并没有对SendValue的属性str就行修改,要修改必须指明this.str="10",所有答案还是6。

Java中String类型变量是immutable(不可变的)。

尽管 change()方法中的str与sv.str都是新的对象实例成员变量值"6"的引用, 由于String类型的 不可变性,change()方法中的str="10"语句实际上是将传入的str副本引用指向了一个值为“10”的新的内存地址,但 原数据引用 sv.str的引用值(也就是“6”的内存地址) 并没有发生改变,因此sv.str指向的值仍旧为6.

 

3.

static int a=1;

void fun1(void)

{

   a=2;

}

void fun2(void)

{

   int a=3;

}

void fun3(void)

{

   static int a=4;

}

int main()

{

 printf(“%d”,a);

 fun1( );

 printf(“%d”,a);

 fun2( );

 printf(“%d”,a);  

 fun3( )

 printf(“%d”,a);

}

 

输出1 2 2 2

首先声明了一个静态全局变量i,首次输出我就不说了,妥妥的1。第二次输出,访问到了早已定义的全局变量i,并改写值,第二次为2。第三次输出,内部定义了一个同名的变量, 它并没有返回值或者被该次执行程序以外任何程序读取a值,所以第三次输出仍然是a。第四次输出,定义了一个静态的局部变量,静态局部变量在函数调用结束后仍然存在,及它的内存空间不会被释放,但其他函数是不能引用它的,所以,两个静态变量虽然同名,但是并不是一样的东西,为2。答案是B

 

4.

在java7中,下列不能做switch()的参数类型是?

switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7

在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long、float、double类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

注意:String类型是Java7开始支持的。

 

5.关于HTTP协议说明,哪些是正确的?

A.在CS模式下,作为一种request-response协议

B.无状态,对每一个请求看成独立的

C.WWW和Email使用的协议

D.HTTP响应包括数字状态码,404经常代表“Page NotFound”

 

A B D

WWW中使用的是HTTP

HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。


第二次:

6.下面程序的输出结果为多少(32位机器上)

1

2

3

4

5

6

7

8

9

10

11

12

void Func(char str_arg[2])

{

    int m = sizeof(str_arg);

    int n = strlen(str_arg);

    printf("%d\n", m);

    printf("%d\n", n);

}

int main(void)

{

    char str[] = "Hello";

    Func(str);

}



A.        5 5

B.      5 4

C.      4 5

D.      4 4

 

也可以写成

voidFunc(char *str_arg)

 

之所以能这样写,是因为Func的参数是一个地址

 

2,对于sizeof的参数,是一个指针,因为这是32位系统, 32 = 8*4,需要4字节存储指针。

如果是64位系统  64 = 8*8,需要8字节

 

3,对于strlen,就是字符串的长度,"Hello"长度是5strlen计算不包含\0的字符串的长度。

 

7.二进制值0.00110011001100110011001100110011转换成10进制后最接近____

在计算机中二进制转换为十进制是为:对应为乘以权值,小数点后面一次为2-1次方,上的-2次方依次类推。所以本题小数点后第一个1转换为十进制为2-3次方,第二个一为2-4次方,这两个的和为0.1875.估算这串二进制转换为十进制为0.2左右。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值