Q1:简单介绍下自己
Q2:有哪些分割方法
Q3:二值化分割的优缺点
Q4:快速排序算法
Q5:常用排序算法
Q6:数组和链表的区别,哪一个在堆上和栈上
链表与数组的区别
A 从逻辑结构来看
A-1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当 数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
A-2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、 删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
B 从内存存储来看
B-1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
B-2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦.
堆和栈的区别
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作 方式类似于数据结构中的栈。局部变量在编译后程序运行时分配,在栈中分配。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
3、全局区(静态区) —,全局变量和静态变量的存储是放在一块的,在编译的时候分配在静态存储区。 程序结束后由系统释放 ,
4、文字常量区 — 常量字符串。程序结束后由系统释放
5、程序代码区— 存放函数体的二进制代码。
Q7:const int * 和 int const *(自右向左读)
指向常量的指针(const int * 和 int const *)
const int* pt =&age
不能使用pt修改age,但是可直接通过修改age修改age的值。
防止使用指针修改多指向的值。
仅当指针指向基本数据类型时,可以将非const赋给const
常量指针(int * const )
int* const pt=&age;
必须初始化,一旦初始化完成,它的值(也就是它所放在指针中的地址就不能改变)。防止改变指针指向的位置。Q8:const & 与引用
常引用:不能通过常引用去修改其引用的内容。
T & 类型的引用或T类型的变量可以用来初始化const T & 类型的引用。
const T 类型的常变量和const T & 类型的引用则不能用来初始化T &类型的引用,除非进行强制类型
转换。Q9:面向对象的几大设计原则
一:开闭原则
二:单一职责原则
三:依赖倒置原则
四:接口分离原则
五:迪米特法则
六:里氏替换原则
抽象,封装,继承,多态
Q10:mian函数之前有什么函数需要执行
全局对象在main()之前初始化,会调用构造函数。
Q11:循环与递归的优劣
Q12:A基类,B派生类,继承,B是A
Q13:new delete 与malloc() free()
二面
Q1:简单介绍下自己
Q2:优先级队列,插入查找时间复杂度
Q3:有没有安装过Va
Q4:Vs常用快捷键
Q5:STL模板库有什么
Q6:二分、快排、冒泡时间复杂度
Q7:二战飞机,如何测试飞机的可靠性
8.29 成都某不知名无人机公司
Q1:介绍一下构造函数
Q2:类有哪些函数是有默认生成的
Q3:深拷贝、浅拷贝
Q4:临时对象
类型转换构造函数时,函数对象返回
Q5:传入值参数与传入引用参数
值传递并不是在所有的情况下都适合,不适宜值传递的情况包括:
当需要在函数中修改实参的值时。
当需要以大型对象作为实参传递时。对实际的应用而言,复制对象多付出的时间和存储空间代价。