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垃圾回收机制