zoukankan      html  css  js  c++  java
  • 常见笔试题总结

    1.冒泡排序

     1     int a[5] = {96,73,12,46,98};
     2     int i = 0,j = 0,t = 0;
     3 
     4     for (j = 0;j < 4;j++) {
     5         for (i = 0;i < 4 - j;i++) {
     6             if (a[i] > a[i+1]) {
     7                 t = a[i];
     8                 a[i] = a[i+1];
     9                 a[i+1] = t;
    10             }
    11         }
    12     }
    View Code

    2.操作系统中,进程可以分为(系统进程)和(用户进程)两类

    3.ISO七层模型是什么?TCP/UDP是属于哪一层?TCP/UDP有何优缺点?

      - 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

      - TCP/UDP属于传输层

      - TCP、UDP优缺点分析

        * TCP:全双工,点对点的连接;提供三大服务:可靠数据传输,拥塞控制,流量控制

        * UDP:无需建立连接,分组首部开销小,应用层控制数据何时发送更为精细。

    4.字符串拷贝有sprintf, strcpy及memcpy函数,请问其区别,哪个效率高?

      - memcpy一次读取所有源数据,而后一次性传到目标地址,效率最高

      - strcpy需要逐个判断字符串是否结束,一字节一字节读取,比上述慢

      - sprintf需要检测输出格式的步骤,所以会更慢

    5.C++语言中类成员函数的重载、覆盖和隐藏的区别?

      - 重写和重载主要有以下几点区别

        * 范围区别:被重写的和重写函数在两个类中,而重载和被重载的函数在同一个类中

        * 参数区别:被重写函数和重写函数逇参数列表一定相同,而重载函数参数列表一定不同

        * virtual的区别:重写的基类中被重写的函数必须要有virtual修饰,而重载函数都可以

      - 隐藏和重写,重载的区别

        * 范围区别:隐藏和重写一样,不在同一个类中

        * 参数区别:当参数列表不同时,无论基类是否有virtual,基类的函数都会被隐藏,而不是重写。

    6.指针和引用有什么区别?传引用比传指针更安全,为什么?

      - 相同点:

        都是地址概念。指针内容为内存地址,而引用则是某块内存的别名

      - 不同点:

        * 指针是一个实体,而引用仅是别名

        * 引用只能在定义时被初始化一次,之后不可变。而指针可以改变

        * 引用不能为空,而指针可以为空

        * sizeof,自增运算符等,其意义不同 

      - 安全性:引用比指针多了类型检查。

    7.进程同步机制及进程间通信途径?

      - 进程同步:信号量

      - 进程间通信方式:管道,信号,系统IPC(消息队列、信号量、共享内存),SOCKET

    8.静态链接和动态链接的优缺点?

      - 静态链接库优缺点:

        * 代码装载速度快,执行速度比动态链接快

        * 只需要在开发者电脑保证静态库的存在即可,程序发布后无需静态库

        * 代码体积大

        * 内存中可能存在多份相同指令,造成空间浪费

      - 动态链接库优点:

        * 节省内存空间

        * 库文件和可执行文件相互独立,当接口不改变情况下,更新库文件对可执行文件不影响

        * 节省磁盘空间

        * 程序运行时,依赖动态库文件

    9.谈谈对进程,程序和线程的理解

      - 进程:作为操作系统的最小执行单元,当程序运行时,操作系统会分配一个进程的数据结构,同时分配4GB(32位机)的资源空间,包括系统环境变量区,堆区,栈区,数据区,文本区。而后期计算机的发展,为了提高CPU的利用率,将操作系统调度单元进一步细化为线程,即同一个进程包含多个线程时,就会有并发问题出现。而线程,必须依赖进程空间而存在,即一个可执行程序的执行,至少应该会分配到一个进程,一个线程资源。

      - 程序:映像文件在存储介质上的一种组织形式,由域组成。域分为加载域和运行域,运行域一般在内存地址中,而加载域在硬盘中存在。域最多由三个输出段组成,输出端包含可读写代码段RW和只读代码段RO以及ZI。

    10.简述队列,栈,堆的异同

      队列和栈都是线性存储结构,但是两者的插入和删除数据的操作不同,队列是“先进先出”,栈是“后进后出”,堆区是“顺序随意”

    11.谈谈对编程规范的理解或认识:

      编程规范可总结为:程序的可行性,可读性,可移植性以及可测试性

    12.写一个“标准”宏MIN

      #define  MIN(a, b)  ((a) <= (b)? (a):(b)) 

    13.typedef和define有什么区别?

      - 用法不同

      - 执行时间不同:typedef是编译过程的一部分,带类型检查,define在预编译部分

      - 作用域不同

      - 对指针的操作不同

    14.static作用?

      static在C中主要用于定义全局静态变量,定义局部静态变量,定义静态函数。

    15.如何避免“野指针”?

      - 指针变量声明没有被初始化

      - 指针p在被free之后,没有置为NULL

      - 指针操作超越了变量的作用范围

    16.中断处理函数:

      - 不能有返回值

      - 不能传递参数

      - 避免做浮点运算

      - pirntf经常有重入和性能上的问题

    17.构造函数是否为虚函数?

      不能。并且不能在构造函数中调用虚函数,因为这样执行的是父类的对应函数,因为其本身还没有构造好。析构函数可以是虚函数。

  • 相关阅读:
    JDK1.8源码(四)——java.util.Arrays类
    JDK1.8源码(三)——java.lang.String类
    Java基础(六)——集合
    设计模式(二)——单例模式
    当你忘了数据库的设计语句,看这一篇就能拾起记忆
    MyBatis之配置优化
    Mybatis中的一些配置,直接拿来就可以用
    网络编程---ip&端口
    java基础数据类型小知识
    学习了MarkDown文本工具
  • 原文地址:https://www.cnblogs.com/Mr-ox/p/6481645.html
Copyright © 2011-2022 走看看