vivo2018秋招软件开发笔试题

选择题

  1. 线程共享部分包括:进程代码段、进程共有资源(全局变量)、进程打开的文件描述符、消息队列、信号的处理器、进程当前目录、进程用户ID、进程组ID;线程独占资源:线程ID、寄存器组的值、栈、错误返回码、线程的信号屏蔽码、线程的优先级。

  2. 循环队列长度=(rear-front+Quesize)%Quesize

  3. 动态分配内存返回空指针,说明分配内存未成功,有三种可能:
    (1)分配的空间太小
    (2)分配的空间被当作内存碎片处理
    (3)val取值过大,即分配空间过大会导致内存溢出

  4. 定义C++类,阻止C++类对象的相互赋值

只要重载=的定义在private或protected下面即可,重载原型的const修饰及函数体内容无所谓

  1. sprintf、strcpy、strncpy及 memcpy 函数,请问这些函数功能有什么区别?从安全角度考虑一般应该用哪个函数复制字符串? 

答:sprintf是格式化字符串函数;strcpy是字符串赋值函数;strncpy是字符串赋值函数,但可以指定最大复制长度;memcpy是内存复制函数。从安全角度来看应该选择strncpy,不易出现越界异常。

  1. 约瑟夫环是一个数学应用题:已知n个人(编号1、2、..n)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个又从1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列。请编写一个程序,给定n、m计算出列人员先后顺序。

  1. 编程找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"