2016腾讯一面
今天去面试,面试官很nice,但好像感冒了,我答题过程中很不停的咳嗽,一开始自己没在状态,一上来,面试官没让我做自我介绍,感觉之前的准备白费了,以上来给了我一个试卷,3道题:
第一个结构体对齐,但不单单是结构体对齐,里面包括虚函数,大概是这样子:
class A { int a; char b; int c; virtual void test(){}; virtual void test2(){}; virtual void test3(){}; };
答案是:16,我答了个12,都想把自己抽一个!
第二题:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数,空间复杂度O(1),时间复杂度为O(n)
答的还算可以,就是在纸上写代码,写的太烂。
分析:从数组两端向中间靠近,推出条件为左右相撞,
1.左端为偶数,右端为奇数时,两数交换,
2.左边为奇数,向右推进一个单位
3.右边为偶数,向左推进一个单位
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 void sortEO(int array[],int len) 2 { 3 int i = 0; 4 int j = len-1; 5 int tmp; 6 while(i < j) 7 { 8 if((array[i]%2==0) && (array[j]%2!=0)) 9 { 10 tmp = array[i]; 11 array[i] = array[j]; 12 array[j] = tmp; 13 } 14 if(array[i]%2 != 0) 15 { 16 i++; 17 } 18 if(array[j]%2 == 0) 19 { 20 j--; 21 } 22 } 23 24 } 25 int main() 26 { 27 int arr[] = {1,2,3,4,5,6,7,8,9,10}; 28 sortEO(arr,10); 29 int m = 0; 30 for(m = 0;m < 10;m++) 31 { 32 printf("%d\t",arr[m]); 33 } 34 return 0; 35 }
第三题,大数相乘,自行脑补各种大数
下面开始各种交流,
1.fopen和open的区别?
2.在socket编程中,当读的信息超过设置大buffer值的时候,会出现什么错误?
3.C++中四种类型转换的cast
4.在Shell编程中,如何通过命令查看TCP连接数
5.TCP的三次握手和四次挥手(为什么要进行四次挥手?)
以上就是今天(2015年9月14日,上午10点30分)腾讯面试的全部干货,希望对有的人有帮助!