彻底鄙视

来源:互联网 发布:徒步鞋 知乎 编辑:程序博客网 时间:2024/06/11 20:50

这个电面鄙视得真彻底。

别人都1小时,我半小时,根本没法聊下去,一问一个不会一问一个不会,一问一个只会一点。最后自己都没信心了,回问了个很没信心的问题:潜力股怎么样?

唉,看来这个基础太薄弱了,写写教训,好好准备吧。

1.简历项目那部分写得更具体一些,不然人都不知道你项目到底做了什么。

2.电面都是随机找的问题,根据职位的需求对你进行相应的提问。

3.什么都不懂是真的会紧张的,没话说。

 

题目要再往深问下去,肯定不止这个难度,这都是很简单的。。。

 

题目按模块来看:

1数据结构与算法

   1.1 链表排序的最快速度?

基于“关键字比较”的排序在最差情况下的最少比较次数为O(n*log(n)),这是可以证明的。如果要达到线性复杂度的排序,一般都不是基于“关键字比较”的方法,通常会依赖于关键字的类型。如最典型的就是“基数排序”。 
  归并排序和堆排序都可以在最差情况下达到O(n*log(n)),但它们在一般情况下没有“快速排序”效率高。其中“归并排序”可以直接用于链表。 
  如果是双向链表,也可以用“快速排序”,不过要修改分界值的计算(因为不能随机访问序列了)和两个方向的游标关系的判断方法(因为不能使用索引或指针的比较了)。

  1.2 10万个整数中取前100个最大的?

建一个100个元素的最大堆,之后其他的树拉进来比较,堆在这里比快排快是因为这100个堆内不要求全排,但是快排不一样,所以移动快一些

  1.3 红黑树?特性、作用和应用场合?

平衡二叉树,实现比AVL简单,效率跟它接近,STL中set和map都是用自顶向下的红黑树实现,另外,linux内核中调度中也用到了红黑树

 

 

2多线程

  2.1 父线程结束后,子线程会怎样?

  return 的话整个进程结束,pthread_exit的话子线程继续

3编程语言

   3.1 虚析构函数的作用?

为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。

   3.2 如何获得一个函数的地址?

int test(int a);

 

//显示函数地址 
 cout<<test<<endl;
 //将函数test的地址赋给函数学指针fp
 int (*fp)(int a); 
 fp=test;
 cout<<fp(5)<<"|"<<(*fp)(10)<<endl; 
 //上面的输出fp(5),这是标准c++的写法,(*fp)(10)这是兼容c语言的标准写法,两种同意,但注意区分,避免写的程序产生移植性问题! 

 

   3.3 如何写交换两个数的函数?(简直侮辱智商了。。。)

 

补充一个c字符数组的:

 char a[] = "nihao";
 char b[] = "nihao/0";

 char c[] = "nih/0ao";
 cout << strlen(a) << endl;  //5
 cout << strlen(b) << endl;  // 5

 cout << strlen(c) << endl;  //3
 cout << sizeof(a) << endl;  //6
 cout << sizeof(b) << endl;  //7

 cout << sizeof(c) << endl;   //7

 

看来strlen以/0为结束标志,在char数组中会自动加上一个/0。

 

原创粉丝点击