所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~

程序猿面试宝典笔记(一)基本概念
程序猿面试宝典笔记(二)预处理、const和sizeof
程序猿面试宝典笔记(三)auto_ptr、递归
程序猿面试宝典笔记(四)面向对象、类型转换、static
程序猿面试宝典笔记(五)数据结构基础
程序猿面试宝典笔记(六)软件測试

题目

写一个“标准”宏MIN。这个宏输入两个參数并返回较小的一个。

解析

为什么要把如此简单的题目也放进来呢?为了强调宏定义里面括号的重要性!

。!

答案

#define MIN(A,B) ((A) <= (B) ? (A) : (B))

题目

const与指针的关系?const成员函数?以及mutable!

解析

一般分为4种情况:

int b = 500;
const int* a = &b;
int const* a = &b;
int* const a = &b;
const int* const a = &b;

答案

1)先看情况1。假设const位于星号的左側,则const就是用来修饰指针所指向的变量,即指针指向为常量。假设const位于星号的右側。const就是修饰指针本身。即指针本身是常量。

因此,1和2的情况同样,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这样的情况下不同意对内容进行更改操作。

对于情况1。能够先不进行初始化。

由于尽管指针内容是常量。但指针本身不是常量。

2)情况2与情况1同样。
3)情况3为指针本身是常量。这样的情况下不能对指针本身进行更改操作,而指针所指向的内容不是常量。

对于情况3,定义时必须同一时候初始化。
4)对于情况4为指针本身和指向的内容均为常量。

以下再说一下const成员函数是什么?
我们定义的类的成员函数中。经常有一些成员函数不改变类的数据成员,也就是说。这些函数是“仅仅读”函数。而有一些函数要改动类数据成员的值。

假设把不改变数据成员的函数都加上const关键字进行标识。显然。可提高程序的可读性。事实上,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图改动数据成员的值,则编译器按错误处理。
在const成员函数中。用mutable修饰成员变量名后,就能够突破const的限制,改动类的成员变量了。

题目

const与#define相比有什么不同?

答案

C++语言能够用const定义常量,也能够用#define定义常量,可是前者比后者有很多其它的长处:
● const常量有数据类型。而宏常量没有数据类型。编译器能够对前者进行类型安全检查,而对后者仅仅进行字符替换,没有类型安全检查。而且在字符替换中可能会产生意料不到的错误(边际效应)。

● 有些集成化的调试工具能够对const常量进行调试,可是不能对宏常量进行调试。

在C++程序中仅仅使用const常量而不使用宏常量,即const常量全然代替宏常量。

题目

以下两段程序分别输出什么?
代码一

#include <iostream>using namespace std;class A
{
private:bool a;int b;bool c;
};class B
{
private:int b;bool a;bool c;
};int main()
{cout << sizeof(A) << endl;cout << sizeof(B) << endl;return 0;
}

代码二

#include <iostream>using namespace std;#pragma pack(1)
class A
{
private:static bool a;int b;bool c;
};class B
{
private:int b;bool a;bool c;
};int main()
{cout << sizeof(A) << endl;cout << sizeof(B) << endl;return 0;
}

解析

非常明显,这道题是考察结构的对齐。

一般来说。为了方便对结构体内元素的訪问和管理。结构体的长度一定是最长的数据元素的整数倍。
代码一类A的对齐为
|bool|—-|—-|—-|
|——–int———|
|bool|—-|—-|—-|
代码一类B的对齐为
|——–int———|
|bool|bool|—-|—-|
而代码二用pack预处理指令来禁止对齐调整。所以就是本身的内存大小。

可是须要注意sizeof是计算栈中分配的内存大小,静态变量是存放在全局数据区。不会被计算在内。

答案

代码一:类A 12字节;类B 8字节
代码二:类A 5字节;类B 6字节

转载于:https://www.cnblogs.com/wzjhoutai/p/7286925.html

GEEK学习笔记— —程序猿面试宝典笔记(二)相关推荐

  1. 程序员面试宝典笔记1-基本概念预处理,const与sizeof

    程序员面试宝典笔记1-基本概念&预处理,const与sizeof 基本概念 赋值语句: i++: 类型转换 运算符问题 a,b交换与比较 其他 预处理 const sizeof 基本概念 赋值 ...

  2. 刷题小程序【程序猿面试宝典】开发(二)| 页面创建、页面配置、全局配置

    文章目录 1.创建页面 2.设置 tabBar 3.设置全局配置 window 4.设置页面相关配置 5.自定义全局CSS样式 6.自定义公共class样式 7.小试牛刀,全局设置页面背景色 8.结束 ...

  3. 刷题小程序【程序猿面试宝典】开发(一)| 项目概述与前期准备

    文章目录 1.项目概述 1.概述与主要功能 2.实现技术 2.前期准备 1.注册微信小程序 2.创建普通小程序项目 3.开通云服务 4.测试云服务 5.优化小程序目录结构 3.本期源码 微信公众号[C ...

  4. Java程序员面试宝典笔记记录(1~3章概括)

    文章目录 导言 求职前重要的两点 求职者注意的几个方面: 挑选offer考虑5点 后台开发人员面试需要补充和阅览的书籍 需备技能方面 需要阅读的书籍(针对Java) 结语 导言   本博文是对于何昊出 ...

  5. 程序员面试宝典 笔记 第七章

    1.指针和引用的区别: 1.非空区别 指针能指向空,而引用不行 2.作为参数传递时不同 引用:在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈区开辟了内存空间,但这时存放的是主函数实参变量的 ...

  6. arraylist从大到小排序_程序猿面试宝典:你该知道的数组排序算法

    通常情况下,我们对数组的操作远远不止遍历判断大小或者判断奇偶数这么简单.比如,当我们需要求一个数组中所有元素的平均值时,操作很简单,只需要去遍历这个数组,并将其内部所有元素中存储的内容进行求和,最后用 ...

  7. 程序员面试宝典学习笔记01

    2019年9月15日,开始了程序员求职路上的第一步--刷题+恶补基础.各种原因导致我一直想要开始却一直延后.现在开始不知道是不是晚了,但不试试一定是没希望的.作为一个学生,别的不敢说,学习能力绝对没问 ...

  8. 疯狂Java学习笔记(72)-----------大话程序猿面试

    大话程序猿面试 10个我最喜欢问程序猿的面试问题 程序猿面试不全然指南 10个经典的C语言面试基础算法及代码 程序猿的10大成功面试技巧 程序猿选择公司的8个标准 编程开发 8个值得关注的PHP安全函 ...

  9. 金九银十北漂记第2篇:《Java程序员面试宝典》读书笔记

    尽信书,则不如无书.-–孟子 谈一谈这本书  <Java程序员面试宝典>是我接触的第一本讲解面试相关的书籍在看到这本书之前我就经常逛csdn的bbs,已经接触面试之类的知识.不过这本书还是 ...

最新文章

  1. Vofuria 的 imageTarget 的图片无法显示或者显示为空白
  2. 第四章之Hadoop I/O
  3. 全球与中国压延铜箔市场发展调研及投资前景战略建议报告2022-2028年版
  4. Android插件化原理解析——Hook机制之Binder Hook
  5. php -- 取整数
  6. 耗时6年的DK博物科普巨著,全面提升孩子的认知高度
  7. 【零散积累】传输文件(sz/rz/scp命令)
  8. C++ 牛客网普及组第二次测试B
  9. 基于AT89C51的多层电梯控制系统
  10. 【Latex学习】Latex中插入超链接/网址
  11. w10恢复出厂设置_w10电脑恢复出厂设置 w10电脑恢复出厂设置的方法
  12. 最好的开源网络入侵检测工具
  13. html5游戏ztype源码,Ztype打字游戏!
  14. html下拉加载原理,GitHub - gavinjzx/wxPull: 原生JS实现微信公众号或网页使用下拉加载和上拉刷新...
  15. 软件测试转行做产品经理,转型产品经理,测试工程师的出路!
  16. 【ultraiso制作ubuntu启动盘(包括U盘和光盘)】
  17. Android辅助功能(Accessibility)简介
  18. css实现1px的几种办法
  19. c语言函数遇到return就结束,关于c语言中return的用法介绍
  20. 我与Java的故事以及0基础Java自学之路(2022最新版)

热门文章

  1. 关于curl: (2) Failed Initialization
  2. ios 获得通讯录中联系人的所有属性 亲测,可行 兼容io6 和 ios 7
  3. IOS CALayer
  4. 运维老鸟谈生产场景如何对linux系统进行分区?
  5. Lotus Notes应用经验谈
  6. (转载)以太网最大帧和最小帧、MTU .
  7. x12arima季节调整方法_降低农村生活污水处理设备运营成本的方法
  8. 分支结构||分支循环结构||使用原生js遍历对象
  9. 用JavaScript实现简单的excel列转sql字符串
  10. coreldraw 双层边框