程的序员常见面试题目.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程的序员常见面试题目

1.extern的作用自己理解:应该需要区分extern在C语言中和C++语言中的作用,C语言中extern声明的函数和变量可以被该文件外部模块引用,C++语言中除了该作用还可以声明extern “C”声明一段代码编译连接的方法为C语言的方法。参考:其实extern的百度词条解释的很清楚,具体的也是跟我上面自己理解差别不是很大。(a) extern是C/C++语言中声明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量在本模块或其他模块中使用(通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。)(b) 被extern “C”修饰的变量和函数是按照C语言的方式编译和链接的。(C语言不支持函数重载,所以函数的C++和C的编译方式不同,这一句的作用就是实现C++和C及其他语言混合编程)2.strstr()函数的作用strstr()函数的原型一般为extern char * strstr(const char *src , const char *dest) , 其作用就是寻找目标字符串在源字符串中第一次出现的位置。3.windows线程优先级问题( 进程和线程的区别和联系 )我觉得这个概念可能面试、笔试的时候不是很适合,毕竟平台相关,大多数公司可能更多的倾向于linux开发,这个问题更换为进程和线程的区别更好,这个是笔试,面试常见的知识考查。(a) 通常一个进程可以包含若干个线程,它们可以利用进程所拥有的资源。进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本不拥有系统资源,只拥有一些在运行中必不可少的资源(如程序计数器,一组寄存器和栈),线程可与同属于一个进程的其他线程共享进程所拥有的全部资源。线程和进程区别归纳: 地址空间和其他资源:进程间互相独立,同一个进程的各线程共享。 通信:进程间通信IPC,线程间可以直接读写进程序数据段(如全局变量)来进行通信-需要进行同步和互斥的辅助。 调度和切换:线程上下文切换比进程上下文切换快速,高效。 多线程的OS中,进程不是一个可执行的实体。4.多方法交换x与y的值5.指针的自加与引用6.前置++与后置++前置++和后置++我觉得一个比较重要的问题是C++中重载两个操作符的时候如何区别:区分前置和后置 函数的参数有一个 (函数重载),后置++有一个(int)参数。7.inline的作用inline函数不像正常函数在调用时存在压栈和call的操作,它会把程序代码直接嵌入到调用代码段中,也就是说使用inline函数会增大二进制程序的体积,但是会使执行速度加快。同时,编译期间可以对参数进行强类型的检查,这是inline优于宏的一个方面。8.二维数组的表示9.ifndef的作用条件编译的语法,一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。10.KMP算法字符串匹配的高级算法11.函数调用方式__cdecl 堆栈由调用者清除?参数从右至左的顺序压入堆栈内__stdcall 堆栈由被调用者清除 参数从右至左的顺序压入堆栈内__fastcall?堆栈由被调用者清除 部分参数保存在寄存器中,然后其他的压入堆栈内thiscall(非关键字) ?堆栈由被调用者清除 参数压入堆栈内,this指针保存在ECX寄存器内12.重载函数?函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。不能利用返回类型进行重载!类中函数const和非const可以进行重载,其实原理是利用this指针的类型是const和非const进行重载,其实原理就是参数类型不同,const指针orconst引用调用的为const版本的函数~更多函数重载的知识。13.构造函数和析构函数 虚拟析构函数的使用场景是指向父类的指针实则为子类指针,调用delete的时候使用虚拟析构函数,防止部分内存泄露。 构造函数不能声明为虚拟函数,因为对象的虚拟函数表的指针其实是在构造函数内编译器添加完成的代码,所以在构造函数执行之前无法访问到虚拟函数表的。14.合并两个有序链表 类似归并排序,两个指针归并即可。15.100亿条记录的文本文件,取出重复数最多的前10条 类似top k算法,无法全部读入内存的top k算法是利用容量为k的最大堆,达到线性时间的top k算法。 首先利用hash table预处理每个元素出现的次数,然后利用次数执行top k算法。16.设计一个双向链表,并且

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档