C++/C#面试_总结

来源:互联网 发布:淘宝信用贷款怎么查看 编辑:程序博客网 时间:2024/05/17 22:50

1. YSB_HW 公司

1. define用法与typedef,inline 的关系。

参见另一篇文章.

2. 实现栈类的定义和基本实现.(构造,析构,Push, Pop)

3. 统计一个串中的数字出现的次数, 和字母出现的次数。

 

2. WSCX 公司

1. 倒置一个string, 如:"Jacky is the best" -> "best the is Jacky".

void Revert(string &str){}

 我的解决办法是:复制一个相同的串, 然后用这个把这个串的单个单个的单词拷贝到原来串中即可。

2. 找出一个串中不重复的第一个字符.  如: "abcdefabcdefjklmklmo" 应返回"j". 

我的解决办法是:先构造一个二维数组, record[26][3].   //此处假设只处理字母, 而且是小写字母。 如果要针对其他字母,则可以扩大这个数组大小。

record[x][0], 用来存储这个字母是否出现, 默认为0

record[x][1], 用来存储这个字母出现次数, 默认为0

record[x][2], 用来存储这个字母最先出现的位置, 默认为整个串长度, 如果默认为-1,则在后面的比较过程中会遇到麻烦。

然后遍历一遍这个串, 即可完成。

3. 一串关于int (*str[])(int), int *a; 等的解释。

4. Static用法

5. Inline与define的用法

内联函数和宏都是在程序出现的地方展开,内联函数不是通过函数调用实现的,
是在调用该函数的程序处将它展开(在编译期间完成的);宏同样时;
不同的是:内联函数可以在编译期间完成诸如类型检测,语句是否正确等编译功能;宏就不具有这样的功能,而且宏展开的时间和内联函数也是不同的(在运行期间展开)

 

3. DHC 公司

这个公司考得很杂, 什么都有, 数据库, 网络层, 操作系统,都有涉及

1. STL 包含哪三部分:算法,容器,迭代器。

2. 同步有两种方法:信号量, 和PV原语操作

3. TCP/IP 四层结构(应用层,传输层,互连网络层,网络接口层)和OSI七层结构(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)

4. Windows 进程间通信方式:文件映射,共享内存, 匿名管道,  命名管道, 邮件槽, 剪贴板, 动态数据交换 等, 参见:http://hi.baidu.com/sinbh/blog/item/a3d386d145bec23f9b5027a9.html

5. string 类的定义,实现,(构造, 析构, 拷贝构造函数, 操作符=重载)

6. 死锁原因与如何预防死锁.

7. 建立Socket连接的三个步骤.

8. 进程(进程就是应用程序的运行实例。每个进程都有自己私有的虚拟地址空间。每个进程都有一个主线程,但可以建立另外的线程。进程中的线程是并行执行的,每个线程占用CPU的时间由系统来划分。

4. MS公司SDE

拷贝一个单链表, 每个结点除了next指针还有一个random指针, random指针可以指向后面链表中的任何一个。

解析:(最好的方法, 其实主要是用到了Dictionary中的存储映射关系, 其中如果用Hash表,也可以实现, 但要考虑如何写这个hash算法)

1. 根据next指针拷贝完各个结点, 在拷贝的同事用一个Dictionary 存储新结点与原结点的对应关系。

2. 根据next指针拷贝完各个结点后, 然后再重新遍历原链表中的random指针,并利用Dictionary中的唯一对应关系来进行新结点的random指针赋值。

方法2:

1. 拷贝各结点, 用next指针

2. 存储新点与旧结点的关系,用二个一维数组, 一个存旧结点的指针,一个存新结点的指针, 下标要保持对应。

3. 最后遍历旧数组的random指针时, 一一对应改新结点的random指针即可。

原创粉丝点击