嵌入式面试问题

98 阅读2分钟

4月「掘金·日新计划」第31天

1、java和c区别

  1. java比c多了一些概念性东西

  2. 封装,继承,多态

    1. 封装:属性方法+修饰符,封装为类

      1. 类就是,c语言中的结构体
      2. 构造方法,就是初始化函数
    2. 继承:继承类的属性方法,在这基础上添加新的

      1. c语言中结构体嵌套结构体
      2. 方法重写(参数方法名一样实现功能不一样),方法重载(方法名称一样,参数列表不一样)
      3. 抽象方法,抽象类(只有方法名没有方法体)
      4. 接口(接口强调行为,抽象方法亲缘关系)
      5. 内部类(类定义在另一个类内部),匿名内部类(没有名称的内部类)
    3. 多态:指同一个操作,可以有不同的解释,产生不同的执行结果

      1. 对象的上下转型,
  3. 异常,泛型

    1. 异常:java中对异常做了封装

      1. Try-catch-finally,throw、throws,自定义异常
    2. 泛型:即参数化类型,将类型由原来的具体的类型参数化(参数是可以传递类型进去)

2、编译

编译过程

  1. 编译分为:预处理(#开头的替换),编译(生成汇编),汇编(二进制文件),链接器(可执行目标程序)

预处理

  1. 宏定义、文件包含、条件编译

  2. 条件编译

    1. #ifndef #define #endif
    2. #if defined() #endif

#与##区别

  1. :把宏参数变成一个字符串; ## :把两个宏参数连接到一起

3、C语言关键字

static 关键字的作用

  1. 储存在静态存储区(数据段或bss
  2. 信息隐藏,不同的文件中定义同名变量和同名函数

const 关键字的作用

  1. 对变量加以限定不能被修改,常量必须在定义的时候同时被初始化

  2. const 和指针一起使用

    1. const int *p1; 指针指向的数据不能修改
    2. int const *p2;
    3. int *const p3; 指针只读不能修改,指向的数据可以修改

volatile 关键字作用

  1. 直接访问内存,跳过寄存器
  2. 牺牲效率,提高正确性

extern 关键字的作用

  1. 外部变量声明

sizeof 关键字的作用

  1. sizeof 在 编译阶段处理,作用为取得一个对象(数据类型或数据对象)的 长度(即占用内存的大小,以 1 字节为单位)