广州大学招聘会总结(IT岗位)

今天无意中与朋友去了一波广州大学商业中心的招聘会,体验了一下招聘的气氛
面了几家互联网的公司吧,题目总结如下 :
  • TCP与UDP的协议的区别
    • 举具体例子,什么时候用TCP协议什么时候用UDP协议
  • C++数组跟指针创建数组(动态数组)的区别
  • 二叉树可以用来干什么
  • 列举使用过的容器
    • map内部是用什么数据结构实现的
    • 请讲解一下你对红黑树的理解
  • define与const的区别
  • 面向对象有哪几大特征
    • C++的多态体现在哪
    • 纯虚函数与虚函数的区别
  • 讲一下协同过滤算法和聚类算法

TCP与UDP的协议的区别

  1. TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
  4. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  5. TCP首部开销20字节;UDP的首部开销小,只有8个字节
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

举具体例子,什么时候用TCP协议什么时候用UDP协议

  1. UDP即时通讯,比如视频和语言聊天
  2. TCP可靠连接,文件传输

C++数组跟指针的区别

  1. 数组一旦声明,我们就不能再给它赋值,但是我们可以给指针赋值
  2. 用指针定义字符串时,指针所指的字符串会被理解为常量字符串,不能修改。数组定义的字符串则可以修改。
  3. 用sizeof运算符可以计算数组变量的数组大小,但指针指向数组时,只能计算出指针本身大小(单位:字节)

二叉树可以用来干什么

  1. 二叉搜索树
  2. 线段树
  3. 可升级演化出除以上数据结构等多种数据结构

列举使用过的容器
map multimap vector set list queue dequeue stack

map内部是用什么数据结构实现的
红黑树

请讲解一下你对红黑树的理解
红黑树是在满足二叉平衡搜索树的性质上进一步演化的高级数据结构
五大性质:

  1. 节点是红色或者黑色的
  2. 根节点是黑色的
  3. 叶子节点是黑色的
  4. 每个红色节点有两个黑色子节点
  5. 从根节点出发的每条路径上的黑色节点个数相同

平衡性的证明:
性质4导致了路径不能有两个毗连的红色节点。最短的可能路径都是黑色节点,最长的可能路径有交替的红色和黑色节点。因为根据性质5所有最长的路径都有相同数目的黑色节点,这就表明了没有路径能多于任何其他路径的两倍长。

具体的插入和删除操作,待补…

define与const的区别

  1. define可以使用undef取消宏定义后再重新定义,而const不能。
  2. define使得程序在预编译阶段把define定义的内容进行了替换,不在常量表中,系统不为之分配内存,而const则在常量表中,由系统分配内存。
  3. define定义的变量,只是单纯的内容替换,在编译时没有进行类型检查;const定义的常量,在编译时进行严格的类型检验,可以避免出错。
  4. define定义表达式时要注意“边缘效应”,最好在整个替换的内容两边加上()。

面向对象有哪几大特征

  1. 多态
  2. 继承
  3. 封装

C++的多态体现在哪

  1. 编译时的多态 :函数重载
  2. 运行时的多态 :虚函数,根据调用的对象类不同,调用不同的虚函数

纯虚函数与虚函数的区别
纯虚函数在虚函数的函数声明后加上 = 0 的关键字,变成抽象类,因此纯虚函数的基类不能定义对象

讲一下协同过滤算法和聚类算法

  1. 协同过滤算法: 基于用户的协同过滤算法、基于物品的协同过滤算法
    基于用户的协同过滤算法: 用余弦等距离公司可以算出用户-用户相似度,推荐相似用户的物品
    基于物品的协同过滤算法: 直接推荐相似物品
  2. 聚类算法: K-means聚类
    把总量n分成k个簇,迭代更新簇中心,最后的k个簇即是聚类的结果

你可能感兴趣的:(markdown)