1) 列出知道的排序算法,并说出各个排序算法的优点
这道题我只写出了各个排序算法的名称,有选择排序,插入排序,合并排序,快速排序,堆排序等等,并没有写出最后的优点。
2) 写一个排序算法
这道题我写了一个快速排序的算法:
Int SPLIT(A,low,high)
{
I=low;
X=A[low];
For(j:low+1 to high)
{
If (A[j] <= x)
{
I = i+1;
If (I != j)
{
互换A[i]和A[j]
}
}
}
互换A[low]和A[i];
w = I;
return w;
}
Quicksort(A,low,high)
{
If (low < high)
{
W = SPLIT(A,low,high);
Quicksort(A,low,w-1);
Quicksort(A,w+1,high);
}
}
Void Main()
{
Quicksort(A,1,n);
}
3) 如何判断一个链表中存在循环,并找到这个循环的起始节点
4) 然后是个改错题,记不大清楚了,貌似是这个样子的:
#include <stdio.h>
Class Hello
{
Const char* String()
{
Char temp[] = “Hello,world!”;
Return temp;
}
}
int main()
{
Printf(“%s/n”,Hello.String);
Return 0;
}
我当时只是改了一些小错误,主要的错误没有改出来,其实我当时对这个错误产生了疑惑,只是没有去付出实践如何去改动,关键还是对自己没有太大的把握,我现在认为正确的应该是这样子的:
#include <stdio.h>
class Hello
{
public:
static const char* String()
{
char* temp = "hello,world!";
return temp;
}
};
int main()
{
printf("%s/n",Hello::String());
return 0;
5) }然后是一道技术题目:
要求是写一段程序,可以输出自己的源代码,拿到这个题目之后是一点都不会的。面试完回到宿舍上网查了查,找到了下面的一条语句:
int main(a){printf(a,34,a="int main(a){printf(a,34,a=%c%s%c,34);return 0;}",34);return 0;}
然后看了半天才看懂,其实这段代码也没有多少的神奇色彩,并不是我们开始怀疑exe文件是找不到自己的源代码的,其实这段语句只是一个输出格式上的取巧,利用双引号的ASCII是34这一个特点来将自己重复的输出出来。
6) 另外,还有一道题目是一个编程题:
题目说在Pascal语言里面的bool值是一bit,而在c++里面Boolean值是32bit,那么就要求用c++来实现Packed Boolean Array。
一开始这题目我理解好像有错误,因为题目里面有提到说如果是在Pascal中,如果是32个bool值的话就要有32bit(4byte)的空间,我以为是这个Packed Boolean Array就是这么一个固定的大小,所以我直接上来就实现了一个固定大小的这么一个Array,后来那个准boss问我的时候才发现自己理解错了。人家只是想实现一个Pascal里面的Boolean变量。可以用来产生数组的。
另外就是关于Qt的
问qt中slot和signal有什么用处?
总结,在面试的时候遇到的一些问题:
首先,是对代码编程的一些细节的问题,比如在一些简单的边界的判断;
其次,是对已经做过的项目的细致理解,比如在做霍尼韦尔中TCMS多线程的时候是如何在各个多线程之间同步的,传输数据的。
如果是准备在面试的时候给别人讲自己做的东西的时候,要提前把自己做的东西要细致的分析并掌握,看看里面到底有什么值得说的,还有一些细节的东西。
看来面试的时候,我的这个开发经历比较会被提出来讲解的,尤其是这里的多线程,一要把这个项目中多线程是如何实现的要讲解清楚,另外还要再了解甚至掌握多线程其他一些同步的机制,通过编程来实现。
计划等有空的时候,真正的自己写一个多线程的例子来实现一些小的功能。
另外,对c++的掌握,包括STL的掌握,对STL一些模板比如queue,vector的一些函数的准确使用,还有这些结构底层是如何实现的。
还有,对实验室的项目来说,dns性能上的优化结果,数据。
总之,整体上感觉这次intel应该是没有希望了,和其他同学来比还是差了很多。我应该做的,对已经做过的东西要熟练掌握的基础上,再去看其他的东西。要学一门,精一门。不能知道很多,但是没有精通的地方。