继续我的找工笔试面试题整理。
1. 快排的两种写法
以前一直用第一种方式进行快排的,笔试中出现了第二种头尾指针的快排。
第一种:
第二种:
2. 结构体内存对齐问题
这个是非常常见的,笔试面试都很容易被问到,这里总结一下。
结构体各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。空缺的字节自动填充。同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数,所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。
另外,还有pack和align修饰符的规定。
#pragma pack规定的对齐长度,实际使用的规则是:
结构,联合,或者类的数据成员,第一个放在偏移为0的地方,以后每个数据成员的对齐,按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。
当数据定义中出现__declspec( align() )时,指定类型的对齐长度还要用自身长度和这里指定的数值比较,然后取其中较大的。最终类/结构的对齐长度也需要和这个数值比较,然后取其中较大的。
可以这样理解, __declspec( align() ) 和 #pragma pack是一对兄弟,前者规定了对齐的最小值,后者规定了对齐的最大值,两者同时出现时,前者拥有更高的优先级。
3.在循环有序数组中查找某个元素
这个题目比较有意思,在普通有序数组查找直接折半即可,但是循环有序数组还得考虑一下很多问题。因为并不知道循环的起始位置。如下:
123456
234561
456123
PS:仅针对顺时针有序循环数组
以上就是本篇文章【找工过程中碰到的笔试面试题整理(3)】的全部内容了,欢迎阅览 ! 文章地址:http://nhjcxspj.xhstdz.com/xwnews/588.html
栏目首页
相关文章
动态
同类文章
热门文章
网站地图
返回首页 物流园资讯移动站 http://nhjcxspj.xhstdz.com/mobile/ , 查看更多