《C/C++程序员面试宝典》
1, 类型转换通用的指导原则
1,为防止精度损失,如果必要的话,类型总是被提升为较宽的的类型;int和unsigned int因为类型宽度一样,则不符合这个规则,两个变量均转换为unsigned int计算;
2,所有含有小于整型的有序类型的算术表达式在计算之前其类型都会被转换成整型;
2,程序设计问题
1,main主函数执行完毕后,如何在执行一段代码?
利用aexit()函数注册一个函数,见P37
2,C++中“”头文件从工作路径开始搜索,而<>头文件从标准库路径开始搜素
3,预处理,const和sizeof
1, 用宏表示一年有多少秒:
#define SECONDS_PER_YEAR (60*60*24*365)UL
2,const 和#define的区别:
1)const有数据类型,而宏常量没有;
2)有些集成化的调试工具可以对const常量调试,但是不能对宏常量调试,C++中只用const而不用宏常量说明前者可以取代后者;
3,结构体对齐问题:
struct A{short a1; short a2; short int a3;}; struct B{long b1; short int b2};
sizeof(A) sizeof(B)分别为6,8。 我认为是按照结构体中最宽的类型对齐,文中解释有问题。
空类的sizeof()为1, 静态变量存储在全局区,所以计算sizeof时忽略它, double的长度为8,float,int为4,char为1
4,sizeof和strlen()函数的区别见 P49
5,sizeof的使用场合
1)主要用途是与存储分配和I/O系统那样的例程进行通信。如Malloc, fread函数
...
6,空类和多重继承的空类都占空间1,但是空类虚继承空类的话子空类占空间为4
4,指针和引用
1,两者的区别:
1)非空区别:任何时候都不能指向空值的引用, 不存在指向空值的引用这个事实意味着引用的代码效率比指针要高;
2)合法性测试:引用在使用之前不需要测试其合法性,而指针总是该被测试,防止其为空;
3)可修改区别:指针可以被重新赋值以指向另一个不同的对象。而引用总是指向在初始化时被指定的对象,以后不能改变,但是其指向的对象内容可以改变;
4)应用区别:在以下情况应该使用指针,一是存在不指向任何对象的可能性;二是需要在不同的时刻指向不同的对象。如果指向一个对象后不会再改变指向,就应该使用引用。
2,类的this 指针:
1) this只能在成员函数中使用,而不能在全局函数、静态函数中使用;使用时如同将this指针作为第一个参数传入;
2) this在成员函数的开始前构造,在成员函数的结束后清除;
3)this指针根据编译器的不同存放在不同的位置;
3,函数内用指针实施内存分配:
注意要用指针的指针才能让函数外的指针指向函数内指针副本分配的空间地址
4,c++中有malloc/free,还引进new/delete的目的:
malloc/free是库函数而不是运算符,不能把构造函数和析构函数的任务强加给malloc/free,于是引进new/delete来完成内存分配、初始化工作和内存清理、释放工作。
5,面向对象
1,面向对象编程的基本概念:
面向对象语言必须提供类,对象,继承;
2,空类产生哪些成员函数:
默认构造函数,析构函数,拷贝构造函数和赋值函数;
3,类中的静态成员记得赋初值。
4,类中,常量const必须在构造函数的初始化列表里赋值,或者设置为static;
5,析构函数可以是内联函数;在有派生类出现时,定义为虚函数是必要的,这样保证了在任何继承情况下不会出现派生类的析构函数未被调用而出现内存泄露的情形;
6,构造函数不能为虚函数:自己理解的原因:保证语言的逻辑正确性,父类的构造函数若能调用派生类的构造函数,可能初始化派生类中存在而父类不存在的成员变量,出现错误。
7,所有需要分配系统资源的用户自定义类型都需要定义拷贝构造函数;有一个默认的拷贝构造函数
8,多态,可以看成是一个接口,多个方法; 继承的目的是代码重用(以前的说法),而多态的目的是接口重用。
重载overload(函数同名函数表不同的函数), 覆盖override:虚函数在派生类中被改写。
6,继承与接口
1,私有继承与保护继承的区别:在无继承的类中,两者是没有区别的;在有继承的类中,基类的Private成员对所有外界都屏蔽,基类的protected控制符对应用程序是屏蔽的,对其直接派生类是可访问的,但同样不能往下继承。
2,C++中如何阻止一个类被实例化? 使用抽象类,或者构造函数被声明为Private
3,构造函数在什么情况下声明成private?比如要阻止编译器生成默认的拷贝构造函数
7,COM组件对象模型
COM不是接口,不是对象,也不是标准,符合COM标准的对象就是COM对象。其实COM对象无非是实现了很多接口的对象而已
8,位运算
1,printf("%f",3); 整数3以0000 0000 0000 0000 0000 0000 0000 0011的形式压入栈
printf函数输出的应该是内存为0000 0000 0000 0000 0000 0000 0000 0011 **** **** **** **** **** **** **** ****的double型数据,double的第一位为符号位,后11位为指数位(全0 表示-1023),后52位为尾数位。
所以,这个double型数据应该等于一个大于1小于2的数乘上2^(-1023),是一个非常小的数,输出取六位小数,所以为0.000000
2,十进制=8进制/10*8+8进制%10
8进制=10进制/8*10+10进制%8
3,C++中的4种运算符转化:
const_cast:消除const属性的转换;
static_cast:强制隐性转换,类似于C-style的转换,如int转换为double,也可以non-const转换为const,也可以用来反向转换,如void*转换为有类型的指针;
dynamic_cast:安全的向下转型,涉及到继承类型的转换;
reinterpret_cast:底层的强制转换,如指针转换为整型;
4,一个字节取的最大整数是255,两个字节(如short int)取的最大整数是65535
5,
分享到:
相关推荐
程序员面试宝典(C/C++&数据结构&网络&数据库&操作系统)
包括面试技巧,数据结构,设计模式,数据库,操作系统,网络等概述,可在面试前巩固一下基础
【程序员面试宝典笔记总结】 在程序员的求职过程中,面试和笔试是至关重要的环节,而一份详实的面试宝典笔记能为准备阶段提供极大的帮助。这份笔记涵盖了多个方面的知识点,旨在帮助程序员巩固基础,提升技能,从而...
包括面试技巧,数据结构,设计模式,数据库,操作系统,网络等概述,可在面试前巩固一下基础
### 程序员面试宝典读书笔记:面向对象篇 #### 第十章:面向对象 **面向对象的基本概念** 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它将数据和处理数据的方法绑定在一起,形成一个整体...
程序员面试宝典,包括各大公司的笔试,面试题。很值得一看的书
在C/C++编程中,面试题常常涉及到语言的核心...理解并熟练掌握这些基本概念对于C/C++程序员来说至关重要,它们是编写高效、安全代码的基础。在面试中,能够深入讨论这些话题,往往能体现应聘者的专业水平和编程素养。
### JAVA程序员面试宝典笔记总结 #### 1. JDK与JRE - **JDK (Java Development Kit)**:这是Java开发工具包,包含了Java运行所需的各类库和工具,包括编译器、文档、示例代码等。JDK还包含了一个JRE(Java Runtime...
《程序员面试宝典(c++)》是一本专门为C++程序员准备的面试指南,旨在帮助求职者在面试中展现出最佳的专业素养和技能。这本书结合了“WangDao”历代的经验,为读者提供了一份详尽且实用的面试准备资料。通过阅读和...
当C++程序需要调用C语言编写的库或函数时,必须使用 `extern "C"` 来告诉编译器按照C语言的规则来处理这些函数。这是因为C++支持函数重载,而C语言不支持。如果不使用 `extern "C"`,C++编译器可能会对函数名进行...
《面试宝典笔记——深入解析C++内存管理与面向对象特性》 在C++编程领域,面试时常会涉及一些核心知识点,例如new、delete、malloc、free的对比,以及C和C++的区别,继承的优缺点,还有C++的面向对象特性。下面将对...
2009/09/27 15:06 1,444,591 c+c++程序员面试宝典.CHM 2009/09/27 15:08 76,288 linux试题.doc 2009/09/30 14:16 3,084 QQ 2009.txt 2009/09/28 17:15 77,312 Trie树.doc 2009/09/28 17:14 49,664 使用正向最大匹配...
数据结构算法锦集_C_C++ 数据结构算法:VC++6.0程序集 数据结构和算法学习笔记(经典)数据结构笔记(C++版) --数据结构 各类公司算法面试题,全 程序员面试题精选100题-何海涛 程序员面试宝典(全) :微软等数据结构+...
这份“C++程序设计员应聘常见面试笔试试题深入剖析”涵盖了许多关键知识点,是准备C++程序员面试的重要资源。下面,我们将详细探讨这些重要的C++概念和技术。 1. **基础语法与数据类型**: - 理解基本数据类型(如...
《王道机试指南》与《算法笔记》(“晴神宝典”)是两本在计算机科学领域,特别是编程竞赛和面试准备中备受推崇的书籍。这些书籍深入浅出地讲解了各种基础及进阶算法,帮助读者提升解决实际问题的能力。...
“校招社招各种面经”则是面试准备的宝典,可能包含了技术面试题、面试技巧和经验分享,对求职者非常有帮助。 总的来说,这个压缩包提供了一条从基础编程到高级技术,从理论学习到实践经验的全面学习路径,对于想要...
LeetCode是一个深受全球开发者喜爱的在线编程挑战平台,它提供了丰富的算法题目,旨在帮助程序员提升技能、准备面试,甚至推动开源项目的发展。本资源集合是"leetcode答案-leetcode:leetcode解题汇总",其中包含了对...