面试准备3-15

一、Java实现多线程的两种方式:

    1.继承Thread类;

    2.实现Runable接口;

二、TCP协议和UDP协议的区别是什么

    • TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的
    • TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
    • TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
    • TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
    • TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。
    • TCP面向的是字节流的服务,UDP面向的是报文的服务。

比如:qq当好友之间胡发消息的时候,采用的是UDP协议,当消息发送错误,服务器会提示重新发送,内网发消息,往往采用的是P2P.

三、Java :

     1.enum 枚举

     2.union 联合体

          一个union可以有多个不同类型的数据成员,但是在某个时刻只有一个成员有值  。

        分配给一个union对象的存储空间,至少要能容纳他的最大的数据成员(即一个union的存储空间至少要为其各个成员的数      据类型中占字节数最大的成员的字节大小

四、#pragma pack

编译器中提供了 #pragma pack(n)来设定变量以n 字节对齐方式。n字节对齐就是说变量存放的起始地址的 偏移量有两种情况:第一、如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式,第二、如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。结构的总大小也有个约束条件,分下面两种情况:如果n大于所有 成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数;否则必须为n的倍数。
下面举例说明其用法。
#pragma pack(push) //保存对齐状态
#pragma pack(4)//设定为4 字节对齐
struct test
{
char m1;
double m4;
int m3;
};
#pragma pack(pop)//恢复对齐状态
以上 结构体的大小为16,下面分析其存储情况,首先为m1分配空间,其 偏移量为0,满足我们自己设定的对齐方式(4 字节对齐),m1大小为1个字节。接着开始为m4分配空间,这时其偏移量为1,需要补足3个字节,这样使偏移量满足为n=4的倍数(因为sizeof(double)大于4),m4占用8个字节。接着为m3分配空间,这时其偏移量为12,满足为4的倍数,m3占用4个字节。这时已经为所有 成员变量分配了空间,共分配了16个字节,满足为n的倍数。如果把上面的 #pragma pack(4)改为#pragma pack(8),那么我们可以得到结构的大小为24。
五、进程和线程

 

六、斐波那契数列

  斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。


你可能感兴趣的:(面试准备3-15)