61问题:参加面试前需要了解及准备哪些方面的知识材料?
回答:①对于初级程序员,偏向考察算法和数据结构,对于高级程序员,关注专业技能和项目经验。
②调试能力和编程习惯很重要,在共享桌面面试中着重考察。
③行为面试中的自我介绍保持在30-60s,着重介绍学习和工作经历情况。
④你在改项目中碰到的最大问题是什么,怎么解决的?
⑤从这个项目中学到了什么?
⑥什么时候会和团队其它成员有什么冲突,你是怎么解决的;与其它团队有什么样的问题冲突,怎么解决的?
⑦提前想好自己性格、能力和目标定位,网络公司还是涉及软硬件的公司等。
⑧越简单的面试题,面试官对这道题的期望就越高,需要能够很完整的解决问题 。
62问题:New动态分配 Delete 释放内存?
回答:new 动态分配一般格式:1. 指针变量名 =new 类型标识符;
2.指针变量名 =new 类型标识符(初始值);
3.指针变量名 =new 类型标识符 [内存单元个数]; 开辟数组的定义方法
new运算符返回的是一个指向所分配类型变量的指针。
delete 释放内存一般格式:1.delete p; 2.delete []p;删除变量p的地址空间,释放int内存。 --堆区(优先队列) delete p实际意思是删除p所指向的目标地址,释放它所占的内存,而非删除p指针。
对于delete 有两大问题: 1.内存泄露 2.重复释放
int* p=new int;
delete p;
p=NULL; //上完厕所洗手的好习惯
63问题:内存分配中的堆和栈的区别?
回答:1.栈内存存储的是局部变量而堆内存存储的是实体;
2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;
3.栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。
64问题:算法的时间复杂度和空间复杂度的计算?
回答:参见网址https://blog.csdn.net/jsjwk/article/details/84315770