面试

2016.03.21阿里电话一面46min,答得不好,但是面试官人很nice的。

1、  上来就问MySQL数据引擎,我没答出来。

2、  MySQL和nosql等的区别。

3、  MySQL优化,我说了两个不能用select子查询和like查询。然后问我为啥不能用like查询。

4、  然后问索引,问MySQL索引原理,建立索引的时候都在干嘛,什么时候使用索引,我只知道是B+树。

5、  没有问SQL语句,看我数据库不太清楚,然后就问了SVN和Github的区别,主要是Github是分布式的。

6、  Ubuntu和Redhat的区别。竟然是软件安装的区别,没有问linux命令。

7、  最熟悉的一种排序,我回答快排,我还说了堆排序。然后问我哪种快,我说快排,掉进陷阱了,这里应该说根据数据量来定。还问了快排的改进算法,主要是基数的选择。我还介绍了STL里的sort排序原理。

8、  C++多态实现。

9、  C++中的内存段分类。

10、 堆和栈的区别。为什么栈的内存由操作系统回收。

11、 C++ static作用。静态存储区,内链接,类的静态变量和函数三个方面回答。

12、 静态链接库与动态链接库的区别。

13、 C++多线程。问了保证线程之间的同步性。我说的mutex,面试官说还有读写锁,这个没有接触过。然后探讨了下violate关键字。

这个问题应该从线程之间的同步和互斥两个方面来回答,线程同步互斥的方法有四种:(互斥锁、读写锁、条件变量等)

① 互斥量

② 临界区(不能用于进程间不同线程的同步)

③ 信号量(有名、无名)

④ 事件event,和进程间的“信号”通信类似

14、 问了进程与线程之间的区别;在linux下,进程fork()之后,父进程、子进程和fork进程之间的关系。

进程间的通信方式有:

① 管道(有名管道、父子进程无名管道)

② 信号

③ 信号量(有名、无名)

④ 消息队列

⑤ 共享内存

⑥ socket

2016.03.29 蘑菇街电话一面26min

1、 聊了下项目

2、 进程与线程的区别、进程间的通信

3、 问我对java熟不熟,问了JVM垃圾回收机制


你可能感兴趣的:(笔记)