C++实习面试题(17阿里1)

目录

C++语言基础

inline

指针

 结构体​

 容器操作

一个类的静态成员

排序算法复杂度

计算机网络

linux相关

 select

poll

epoll

价值相关

思维题目


C++语言基础

inline

指针

 

错这个题,只能说对指针的理解还不到位了~ 

 结构体

 emmm,忘记struct要内存对其了,这里补一下结构体的知识:

结构体的总大小,也就是sizeof的结果,.必须是其内部最大成员的"最宽基本类型成员"的整数倍.不足的要补齐.

 容器操作

 emmm,erase接受一个迭代器参数返回删除的元素的下一个迭代器,然后加1,结果是最后只删除了两个300

一个类的静态成员

 类的静态成员属于整个类 而不是某个对象,可以被类的所有方法访问,子类当然可以父类静态成员;
静态方法属于整个类,在对象创建之前就已经分配空间,类的非静态成员要在对象创建后才有内存,所有静态方法只能访问静态成员,不能访问非静态成员;
静态成员可以被任一对象修改,修改后的值可以被所有对象共享。

排序算法复杂度

 没有细想了,没考虑已经排序好的情况...

 下图是常见排序算法复杂度:

计算机网络

 time_wait是拆除阶段的(还未学计网

linux相关

 select

  • select能监控的描述符个数由内核中的FD_SETSIZE限制,仅为1024,这也是select最大的缺点,因为现在的服务器并发量远远不止1024。即使能重新编译内核改变FD_SETSIZE的值,但这并不能提高select的性能。
  • 每次调用select都会线性扫描所有描述符的状态,在select结束后,用户也要线性扫描fd_set数组才知道哪些描述符准备就绪,等于说每次调用复杂度都是O(n)的,在并发量大的情况下,每次扫描都是相当耗时的,很有可能有未处理的连接等待超时。
  • 每次调用select都要在用户空间和内核空间里进行内存复制fd描述符等信息。

poll

  • poll使用pollfd结构来存储fd,突破了select中描述符数目的限制。
  • 与select的后两点类似,poll仍然需要将pollfd数组拷贝到内核空间,之后依次扫描fd的状态,整体复杂度依然是O(n)的,在并发量大的情况下服务器性能会快速下降。

epoll

  • epoll维护的描述符数目不受到限制,而且性能不会随着描述符数目的增加而下降。
  • 服务器的特点是经常维护着大量连接,但其中某一时刻读写的操作符数量却不多。epoll先通过epoll_ctl注册一个描述符到内核中,并一直维护着而不像poll每次操作都将所有要监控的描述符传递给内核;在描述符读写就绪时,通过回掉函数将自己加入就绪队列中,之后epoll_wait返回该就绪队列。也就是说,epoll基本不做无用的操作,时间复杂度仅与活跃的客户端数有关,而不会随着描述符数目的增加而下降。
  • epoll在传递内核与用户空间的消息时使用了内存共享,而不是内存拷贝,这也使得epoll的效率比poll和select更高。

这个说实话不大懂,没怎么接触过linux

价值相关

实习还有这种题目,不过不大懂,第一次见:

 选项AB是对称的,所以肯定正确,由AB可以看出题目的意图是,这次交换靠的是物品的相对价值相当(小张觉得橡皮比小刀更好, 小王觉得小刀比橡皮更好 ),但明显最后一个选项等值指的是他们的绝对价值

思维题目

 均可获得。
2:7L装满,倒满5L,剩2L
3:5L装满,倒7L;再装满5L,倒满7L,剩3L
6:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,再倒满7L,剩1L;倒给7L,5升装满,共6L。
8:5L装满,倒7L;再装满5L,倒满7L,剩3L;倒给7L,5L装满,共8L
11:7L装满,倒满5L,剩2L;倒给5L,7L装满,再倒满5L,剩4L;倒给5L,7L倒满,共11L

其实这个倒来倒去有点像那个什么减损术求最大公约数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值