常见笔试题-(选择题)
介绍一些面试题中经常出现的题目
1.已知中序、先序、后序其二,求另外一个。
中序遍历:左子树 , 根 ,右子树
先序遍历:根 ,左子树 ,右子树
后序遍历:左子树, 右子树, 根
这道题的解法一般及时根据其中两个遍历,画出树的结构再求出另一个遍历的结果。
2.求平均寻道长度
3.哈希表
4.出栈顺序
5.哈夫曼树
5.结构体字节对齐
解析:
内存对齐规则是按照结构体成员的声明顺序,依次安排内存,主要遵循以下两个原则:
- 1.每个成员的起始地址的先对于结构体的首地址的偏移量必须为该成员所占内存大小的整数倍。
- 2.结构体占内存的总长度是最大成员所占内存大小的整数倍。
根据字节对齐,在64位系统下struct st_t 结构体占用的字节为48个。
struct st_t {
int status; //占用8个(后面的4个为对齐位)
short *pdata;//占用8个
char errstr[32];//占用32个
};
char *p=(char *)(st[2].esstr+32),p实际指向了st[3]
则p-(char *)(st)),即为&st[3]-&st[0],占用空间为3个结构体的大小,即3 * 48=144
**注:和机器字长及编译器有关系:所以,int ,long int ,宽度都可能随编译器而异。 **
机器字长 | 16位机 | 32位机 | 64位机 |
---|---|---|---|
指针变量 | 2 | 4 | 8 |
int | 2 | 4 | 4 |
long | 4 | 4 | 8 |