题目问答

来源:互联网 发布:excel数据标签 编辑:程序博客网 时间:2024/06/13 00:29

经典笔试

  • extern 的作用。

      extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。

      extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的,这要看编译器的"脾气"了(不同的编译器采用的方法不一样)

详细参考:C/C++中extern关键字详解

  • strsstr()函数的作用。

   函数原型是char *strstr(char *str1,char *str2);作用是找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)

     这其实涉及了一个字符匹配算法问题。

  • Windows 下线程优先级问题。

详细参考:Windows核心编程学习笔记--进程和线程的优先级

  • 多方法交换x 与y 的值。

1. x ^=y y ^=x x ^=y2. x=x+y y=x-y x=x-y3. x=x-y y=y+x x=y-x4. x=y-x y=y-x x=x+y5.x=x*y y=x/y x=x/y6.x=y/x y=y/x x=x*y


  • 指针的自加与引用。
  • 前置++与后置忡。
  • inline 的作用。
  • (二维数组的表示。
  • ifndef 的作用。
  • KMP 算法。

详细参考:字符串匹配的KMP算法

  • 函数调用方式。
  • 重载函数。
  • 构造函数与析构函数。
  • 合并两个有序链衰。
  • 逻辑推理一智力题。
  • 100 亿条记录的文本文件,取出重复数最多的前10 条.
  • 设计一个双向链衰,并提供一个可根据值删除元素的函数。
  • 二叉树的多种遍历算法实现。
  • 有读和写两个线程和一个队列,读线程从队列中读数据, 写线程往队列中写数据。
  • stack, heap, memory-pool 。
  • TCP 的流量控制和拥塞控制机制。

详细参考:TCP的流量控制和拥塞控制

  • 写一个函数,返回一个字符串中只出现一次的第一个字符。
  • 求一个数组中第k 大的数的位置。
  • 面向对象继承、多态问题,如多态的实现机制。
  • 内联函数什么时候不展开?
  • 成员初始化列表有什么作用? 什么必须在成员初始化列表中进行初始化?
  • 指针与引用的区别。
  • 创建空类时,哪些成员函数是系统默认的?
  • 有lOw 个IP 段,这些IP 段之间都不重合,随便给定一个p, 求出属于哪个IP 段。
  •  网络编程(网络编程范式,非阻塞connect )。
  • TCP/IP 。
  • Linux 的命令、原理以及底层实现。
  • Linux 编程, 包括所有互斥的方法、多线程编程、进程间通信。
  •  一个一维数轴上有不同的线段,求重复最长的两个线段。例如, a: I ~3, b: 2~7,C: 2斗, 最长重复是b 和C o
  • 有向带权图最短路径。
  • 内存溢出与内存泄露有什么区别?
  • 利用互斥:量和条件变量设计一个消息队列,具有以下功能: 1 )创建消息队列(消息中所含的元素); 2 )消息队列中插入消息: 3 )取出一个消息〈阻塞方式); 4 )取出第一消息〈非阻塞方式)。注意,互斥量、条件变量和队列由系统给定。
  • 用非递归方法完成二叉树的遍历。
  • cnwap 和cnnet 的区别。
  • 设计一个内存管理策略,要求可以保证多线程时的安全,防止内存越界等,效率不低于malloc( )/台ee()函数。
  • 排列组合问题。
  • 若有序衰的关键字序列为Cb, c, d斤, f, g, q,几5,心,则在二分查找关键字b 的过程中,先后进行比较的关键字依次是什么?
  • 有一个虚拟存储系统,若进程在内存中占3 页〈开始时内存为空〉,若采用先进出(FIFO )页面淘汰算法,当执行如下访问序列后,口,3人刀,2,”,2,3人5 , 会发生多少缺页?
  • 有一个顺序枝s,元素sl , s2 ,。, s4, s5, s6 依次进钱,如果6 个元素的出钱j顺序为s2 , s3, s4 ,而, s5. sl ,则顺序钱的容量至少应该有多少?
  • (0,2, l ,4,3夕,5点6,7]是以数组形式存储的最小雄,删除雄顶元素。后的结果是多少?
  • 某页式存储管理系统中,地址寄存器长度为24 位,其中号占14 位,则主存的分块大小是多少字节?
  • 运算符重载。
  • 各种排序算法的使用与比较。
  • 一维数组默认初始化问题。
  • const char* pl =”hello”; char* const p2 =”world”;有什么区别?
  • struct 与class 有什么区别与联系?
  • 函数指针与指针函数的区别。
  • 指针数组与数组指针的区别。
  • 大端小端。
  • 虚函数问题。
  • 如何判断单链表是否有环?

其他问题

死锁产生的原因及四个必要条件

产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则
就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁。
死锁的解除与预防:
理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和
解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确
定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态
的情况下占用资源。因此,对资源的分配要给予合理的规划
OSI七层结构
1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
2.数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
3.网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
4.传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
5.会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
6.表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
7.应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

0 0
原创粉丝点击