- 有哪些排序算法,其中哪些是稳定的?什么是稳定?
排序算法有:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序等。其中稳定的是:冒泡排序,选择排序,插入排序和归并排序。稳定指的是:在一个待排序的记录序列中,如果存在有多个相同的关键字记录,若经过排序,这些关键字之间的相对次序保持不变,我们就说这种排序方法是稳定的,否则就是不稳定的。
- 函数指针了解吗?
顾名思义,它就是函数的指针,他是一个指针指向一个函数。可以应用在函数回调中,函数回调本质为函数指针作为函数参数,函数调用时传入函数地址,这可以使我们的代码变得更加灵活,可复用性更强。
- 什么是二级指针?
一级指针就是指针,二级指针就是指向指针的指针。
- 有没有用过stl。
Stl就是c++标准模板库,提供了通用的模板类和函数。包括容器,算法,迭代器等。
- 网页爬虫,爬取海量数据下载的时候采用深度优先搜索还是广度优先搜索更好?
由于深度优先搜索算法可能会使爬虫系统陷入一个网站内部,不利于搜索比较靠近网站首页的网页信息,因此一般采用广度优先搜索算法采集网页。
- 编译性语言和解释性语言的区别。
解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要逐行翻译一次,效率比较低。现代解释性语言比如java,通常把源程序编译成中间代码,然后利用解释器把中间代码一条条翻译成目标机器代码,一条一条执行。
编译性语言写的程序在被执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后需要运行的时候就不用重新翻译了,直接使用编译的结果就行了,所以编译型语言程序执行效率高。
- 什么是编译?什么是链接?
编译就是把源代码翻译成为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织最终形成可执行代码的过程。