腾讯暑期实习一面面经

腾讯暑期实习一面面经

面的是腾讯音乐部门,全民K歌下面做 linux C++开发的,全程大概45min左右,过程记录如下:

1. linux 指令有用过吗?

常用的查看文件指令:

		cat 、 tac 、more 、less 、 head 、 tail

查看空闲和已用内存大小的指令:

		free		不带选项默认是以KB为单位
		
		free -m		以MB为单位,同样适用于 -b(B为单位) 、 -g(GB为单位) 、 -tera(TB为单位)

查看系统中进程及资源的使用情况

		top			top是动态监视系统任务的工具,top输出的结果是连续的

杀死进程指令:

​ 1. 先用监视进程的指令 p s ps ps 查看进程 pid :

		ps -ef   			显示所有进程
		
		ps -ef | grep 进程名 			根据程序名称查询相关进程状态

​ 2. 再用 kill pid 杀死进程:

		kill 933		默认是选项是 -15,代表 SIGTERM,系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下情况之一:程序立刻停止;当程序释放相应资源后再停止;程序可能仍然继续运行。
		
		kill -9 933			-9 代表 SIGKILL, 强制杀死进程
		
		kill all 程序名		可以通过程序名字直接杀死所有相关进程

设定进程优先级**:

​ Linux操作系统中,进程之间是竞争资源(CPU和内存)的关系,竞争的优劣度(谦让度)是通过一个数值来实现的,-20——19,其中,负值或者0表示最高优先级。而nice可以为进程指定谦让度的值,所以进程的优先级就是:父进程的优先级的值+所指定的谦让度的值相加。

		nice -n 谦让度的增量值 程序		运行指定的程序,并为它指定谦让度增量
		
		renice 谦让度 pid 				通过进程 pid 来改变谦让度,进而达到更改进程优先级的目的

其余常见的:

		ls  	列出目录下的文件 

		sudo 	以系统管理者执行 

		chmod	改变一个或多个文件的权限(存取模式)

2. 讲一下C++中const和define的区别

从编译处理的阶段、类型和安全检查、存储方式三个方面简单介绍

3. C++中多态有几种?

重载和重写:

  1. 重载主要是指函数重载,属于静态多态,在编译的时候就已经确定;
  2. 重写是指虚函数机制实现的动态多态,在运行期间动态绑定:
    对于含有虚函数的类,在创建父类的对象的时候,会同时创建一个虚表指针,虚表指针会指向虚函数表,虚函数表中存放了各个虚函数的入口地址;在创建子类对象的时候,子类会继承其父类的虚函数表,当子类重写虚函数时,会将其继承的虚函数表中的函数入口地址替换为重写的函数地址。使用虚函数,会增加访问的内存开销,降低效率。

4. 数据库索引使用的数据结构是什么?

B+树,怎么个实现方法

5. 数据库中找出最近被搜索次数最多的十个关键词

实现语句大概是这样:

	select world from table group by world order by count(*) desc limit 10;

6. join 和 left join的区别

主要就是内连接和外连接的区别:

  1. 内连接不区分主副表,只查找两张表匹配上的记录。
  2. 外连接分为主表和副表,left join 左边的是主表,右边的是副表,主要查询主表的数据,当副表中的数据没有和主表中的数据匹配上时,副表会自动模拟出 NULL 与之匹配。

7. 说说数据库的两种存储引擎

MyISAM 和 InnoDB:

  1. MyISAM 是 mysql 常用的存储引擎之一,但这种引擎不是默认的。MyISAM采用三个文件组织一张表:xxx.frm(存储格式的文件)、xxx.MYD(存储表中数据的文件)、xxx.MYI(存储表中索引的文件)。
    优点:可被压缩,节省存储空间。并且可以转换为只读表,提高检索效率。
    缺点:不支持事务。
  2. InnoDB 表的结构存储在 xxx.frm 文件中,数据存储在 tablespace 这样的表空间中(逻辑概念),无法被压缩,无法转换成只读。
    优点:支持事务、行级锁、外键等,数据的安全可以得到保障;在MySQL数据库崩溃之后提供自动恢复机制;支持级联删除和级联更新。
    缺点:无法被压缩,无法转换成只读。

8. C++的STL使用过哪几种

  1. 序列式容器:
    vector、deque(包含queue和stack)、list(单向和双向)、array
  2. 关联式容器:
    底层红黑树实现:set、map、multiset、multimap
    底层哈希实现:unordered_set、unordered_multiset、unordered_map、unordered_multimap

9. 讲一下你了解的HTTP协议

从HTTP协议的作用、特点以及请求/响应的过程等方面简单介绍。

10. TCP 和 UDP 的区别

主要从交付的可靠性、有无连接、适用场景区分,另外在首部开销、报文长度、服务对象等方面还有些小的区别

11. select() 和 epoll()的区别

没了解过网络编程。。。

12. 还是刚才查询关键词的场景,你自己用C++实现的话怎么实现?

使用 map 存储, key是关键词, value是关键词出现的次数, 然后自己实现一个排序函数或者仿函数,根据 map 的 second 大小排序,复杂度是 n l o g n n log n nlogn

有没有复杂度更低的方法?

使用哈希表 + 最小堆,复杂度是 n l o g k n log k nlogk ,想不出来 O(n) 的方法了。。。

13. 最后介绍实验室的项目

你可能感兴趣的:(腾讯暑期实习一面面经)