2022春招魔视智能科技-嵌入式开发工程师笔试回忆版

声明:
  1. 这家公司偏人工智能
  2. 题目仅代表个人观点,若有错误欢迎指出。
一、单选
  1. 瀑布模型把软件生命周期划分为8个主要阶段,其中(C)阶段定义的规划将成为软件测试中的系统测试阶段的目标。
    A.问题的定义
    B.可行性研究
    C.软件需求分析
    D.系统总体设计
    这题一开始我选的B,记住答案就行了,太偏了
  2. 有以下程序,执行后的结果是(B)
    void main() { char *s[] = {"one", "two", "three"}, *p; p = s[1]; printf("%c, %s\n", *(p + 1), s[0]); }

    A. n,two
    B. w,one
    C. t,one
    D. o,two
    • 这题我写错了,错因在不清楚字符指针数组。
    • 这里s是一个字符指针数组,数组中存放的是一个个字符指针,char p = "abc"表示将字符串常量abc的首地址赋值给p,所以p=s[1]即为char p = "two",接下来就柳暗花明了。
二、填空
  1. 在32位系统中,写代码向内存0x30008000地址写入一个整形值0x100
    • 属实不会,上网查了下“如何往指定内存写数据”但是我测试的时候发现什么都输出不了,望友友们解答下~~
    • 参考:int *p = (int )0x30008000; *p = 0x100; 或(int *)0x30008000 = 0x100;
三、简答
  1. 【2022春招魔视智能科技-嵌入式开发工程师笔试回忆版】delete和delete[]的区别:
    • delete:回收用 new 分配的单个对象的内存空间
    • delete[]:回收用 new[] 分配的一组对象的内存空间
  2. new、delete、malloc、free之间的关系:
    • 都可以用来在堆上分配和回收空间。new/delete是操作符,malloc/free是库函数。
    • 执行new实际上执行两个过程:a.分配未初始化的内存空间(malloc作用)b.使用对象的构造函数对空间进行初始化;
      执行delete也有两个过程:a.使用析构函数对对象进行析构 b.回收内存空间(free作用)
  3. 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
    C语言中为宏定义,C++中为内联函数
  4. 说明静态绑定和动态绑定的特性和用法:
    • 静态绑定:绑定的是静态类型,所对应的函数或属性依赖于对象的静态类型,发生在编译期;(静态类型:对象在声明时采用的类型,在编译期既已确定;)
    • 动态绑定:绑定的是动态类型,所对应的函数或属性依赖于对象的动态类型,发生在运行期;(动态类型:通常是指一个指针或引用目前所指对象的类型,是在运行期决定的;)
    • 区别:静态绑定发生在编译期,动态绑定发生在运行期;对象的动态类型可以更改,但是静态类型无法更改;要想实现动态,必须使用动态绑定;在继承体系中只有虚函数使用的是动态绑定,其他的全部是静态绑定;
四、编程
  1. 编程用二分法实现整数快速查找:
int BinarySearch(vector &num, int target) { int left = 0, right = num.size() - 1; while(left <= right) { int mid = left + right / 2; if(mid == target) return mid else if(mid > target) left = mid + 1; else right = mid - 1; } return -1; //查找失败 }

  1. 转换整数,如x=123则返回321,若x=-123则返回-321.编程实现,C语言或C++都可:
    源引

    推荐阅读