0%

面试相关

  • int指令和syscall指令的区别

参考: https://www.ibm.com/developerworks/cn/linux/kernel/l-k26ncpu/index.html

https://bbs.pediy.com/thread-258975.htm

  • 从磁盘读取文件的过程

其实磁盘读取的过程,我是了解过的,但是,没有用过忘记具体的过程了,,,记录一下。读取磁盘一般都是通过bios中断来读取的,参考:

https://en.wikipedia.org/wiki/INT_13H

总的来说,有两种方式一种是chs模式,另一种是lea模式,chs是一种比较古老的方式,面向的是磁盘模型

https://en.wikipedia.org/wiki/Cylinder-head-sector

你需要指定柱面-磁头-扇区来确定你要读的数据块,而lea模式是将磁盘虚拟成一系列大小相同的连续块,你只需要指定你要读的块即可,实际上是对chs模式的一种包装

https://en.wikipedia.org/wiki/Logical_block_addressing

  • 一个结构体有一个char,short,int成员,成员的顺序会不会影响结构体大小

直觉上不会,其实会的,,考虑一种这样的情况

1
2
3
4
5
struct t1{
char a; // 占1填充3
int b; // 4
short c; // 占2对齐填充2
};
1
2
3
4
5
struct t2{
char a; // 占1填充1
short b; //2
int c; //4
};

你会发现第一次sizeof之后的结果是12,第二个是8。。。其实内存对齐的规则不仅仅只有4字节和8字节对齐

https://www.nowcoder.com/questionTerminal/c50e91a934d642a486b02b8417dd3ca9?toCommentId=641562

A. 对于结构的各个成员,第一个成员位于偏移为0的位置,以后每个数据成员的偏移量必须是这个数据成员的自身长度的倍数。

B.在数据成员完成各自对齐之后,结构本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构最大数据成员长度中,比较小的那个进行

  • python字典插入1000元素的时间复杂度

因为我没学过算法,盲猜O(1),之后问了acm大佬才知道字典的实现是hash列表,我还以为是数组实现的。。。当时和面试官扯皮,python的实现,回来想想字典确实适合hash列表实现,算法有点差。。。有待补充