互联网面试笔试题

进修社 人气:2.83W

话说,知己知彼才能百战百胜。想打赢一场漂亮的求职战,首先你要了解一下“对手”的招数。下面是达妹为大家收集的一些著名互联网企业的面试笔试试题!大家不妨在去求职之前提前准备一下哦!

互联网面试笔试题

rn的作用

应该需要区分extern在C语言中和C++语言中的作用,C语言中extern声明的函数和变量可以被该文件外部模块引用,C++语言中除了该作用还可以声明extern “C”声明一段代码编译连接的方法为C语言的方法。

(a) extern是C/C++语言中声明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量在本模块或其他模块中使用(通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。)

(b) 被extern “C”修饰的变量和函数是按照C语言的方式编译和链接的。(C语言不支持函数重载所以函数的C++和C的编译方式不同,这一句的作用就是实现C++和C及其他语言混合编程)

tr()函数的作用

strstr()函数的原型一般为extern char * strstr(const char *src , const char *dest) , 其作用就是寻找目标字符串在源字符串中第一次出现的位置。

ows线程优先级问题( 进程和线程的区别和联系 )

这个概念可能面试、笔试的时候不是很适合,毕竟平台相关,大多数公司可能更多的倾向于linux开发,这个问题更换为进程和线程的区别更好,这个是笔试,面试常见的`知识考查。

(a)通常一个进程可以包含若干个线程,它们可以利用进程所拥有的资源。进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本不拥有系统资源,只拥有一些在运行中必不可少的资源(如程序计数器,一组寄存器和栈),线程可与同属于一个进程的其他线程共享进程所拥有的全部资源。

线程和进程区别归纳:

地址空间和其他资源:进程间互相独立,同一个进程的各线程共享。

通信:进程间通信IPC,线程间可以直接读写进程序数据段(如全局变量)来进行通信-需要进行同步和互斥的辅助。

调度和切换:线程上下文切换比进程上下文切换快速,高效。

多线程的OS中,进程不是一个可执行的实体。

4.多方法交换x与y的值

5.指针的自加与引用

6.前置++与后置++

前置++和后置++我觉得一个比较重要的问题是C++中重载两个操作符的时候如何区别:区分前置和后置 函数的参数有一个 (函数重载),后置++有一个(int)参数。

ne的作用

inline函数不像正常函数在调用时存在压栈和call的操作,它会把程序代码直接嵌入到调用代码段中,也就是说使用inline函数会增大二进制程序的体积,但是会使执行速度加快。

同时,编译期间可以对参数进行强类型的检查,这是inline优于宏的一个方面。

8.二维数组的表示

ef的作用

条件编译的语法,一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。

算法

字符串匹配的高级算法

11.函数调用方式

12.重载函数

函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。不能利用返回类型进行重载!类中函数const和非const可以进行重载,其实原理是利用this指针的类型是const和非const进行重载,其实原理就是参数类型不同,const指针orconst引用调用的为const版本的函数~更多函数重载的知识。

13.构造函数和析构函数

虚拟析构函数的使用场景是指向父类的指针实则为子类指针,调用的时候使用虚拟析构函数,防止部分内存泄露。

构造函数不能声明为虚拟函数,因为对象的虚拟函数表的指针其实是在构造函数内编译器添加完成的代码,所以在构造函数执行之前无法访问到虚拟函数表的。

14.合并两个有序链表

类似归并排序,两个指针归并即可。

15.100亿条记录的文本文件,取出重复数最多的前10条

类似top k算法,无法全部读入内存的top k算法是利用容量为k的最大堆,达到线性时间的top k算法。

首先利用hash table预处理每个元素出现的次数,然后利用次数执行top k算法。