c语言经典面试题2.pdf
《c语言经典面试题2.pdf》由会员分享,可在线阅读,更多相关《c语言经典面试题2.pdf(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语 言 面 试 题 大 汇 总 之 华 为 面 试 题 1、局 部 变 量 能 否 和 全 局 变 量 重 名?答:能,局 部 会 屏 蔽 全 局。要 用 全 局 变 量,需 要 使 用”:;局 部 变 量 可 以 与 全 局 变 量 同 名,在 函 数 内 引 用 这 个 变 量 时,会 用 到 同 名 的 局 部 变 量,而 不 会 用 到 全 局 变 量。对 于 有 些 编 译 器 而 言,在 同 一 个 函 数 内 可 以 定 义 多 个 同 名 的 局 部 变 量,比 如 在 两 个 循 环 体 内 都 定 义 一 个 同 名 的 局 部 变 量,而 那 个 局 部 变 量 的
2、作 用 域 就 在 那 个 循 环 体 内。2、如 何 引 用 一 个 已 经 定 义 过 的 全 局 变 量?答:extern可 以 用 引 用 头 文 件 的 方 式,也 可 以 用 extern关 键 字,如 果 用 引 用 头 文 件 方 式 来 引 用 某 个 在 头 文 件 中 声 明 的 全 局 变 量,假 定 你 将 那 个 编 写 错 了,那 么 在 编 译 期 间 会 报 错,如 果 你 用 extern方 式 引 用 时 一,假 定 你 犯 了 同 样 的 错 误,那 么 在 编 译 期 间 不 会 报 错,而 在 连 接 期 间 报 错。3、全 局 变 量 可 不 可
3、以 定 义 在 可 被 多 个.C文 件 包 含 的 头 文 件 中?为 什 么?答:可 以,在 不 同 的 C 文 件 中 以 static形 式 来 声 明 同 名 全 局 变 量。可 以 在 不 同 的 C 文 件 中 声 明 同 名 的 全 局 变 量,前 提 是 其 中 只 能 有 一 个 C 文 件 中 对 此 变 量 赋 初 值,此 时 连 接 不 会 出 错.4、请 写 出 下 列 代 码 的 输 出 内 容#include int main(void)(int a,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf(b,c,d:%d,%d,%d,b,c,d
4、);return 0;)答:10,12,1205、static全 局 变 量 与 普 通 的 全 局 变 量 有 什 么 区 别?static局 部 变 量 和 普 通 局 部 变 量 有 什 么 区 别?static函 数 与 普 通 函 数 有 什 么 区 别?答:1)全 局 变 量(外 部 变 量)的 说 明 之 前 再 冠 以 static就 构 成 了 静 态 的 全 局 变 量。全 局 变 量 本 身 就 是 静 态 存 储 方 式,静 态 全 局 变 量 当 然 也 是 静 态 存 储 方 式。这 两 者 在 存 储 方 式 上 并 无 不 同。这 两 者 的 区 别 在 于 非
5、 静 态 全 局 变 量 的 作 用 域 是 整 个 源 程 序,当 一 个 源 程 序 由 多 个 源 文 件 组 成 时,非 静 态 的 全 局 变 量 在 各 个 源 文 件 中 都 是 有 效 的。而 静 态 全 局 变 量 则 限 制 了 其 作 用 域,即 只 在 定 义 该 变 量 的 源 文 件 内 有 效,在 同 一 源 程 序 的 其 它 源 文 件 中 不 能 使 用 它。由 于 静 态 全 局 变 量 的 作 用 域 局 限 于 一 个 源 文 件 内,只 能 为 该 源 文 件 内 的 函 数 公 用,因 此 可 以 避 免 在 其 它 源 文 件 中 引 起 错 误
6、。2)从 以 上 分 析 可 以 看 出,把 局 部 变 量 改 变 为 静 态 变 量 后 是 改 变 了 它 的 存 储 方 式 即 改 变 了 它 的 生 存 期。把 全 局 变 量 改 变 为 静 态 变 量 后 是 改 变 了 它 的 作 用 域,限 制 了 它 的 使 用 范 围。3)static函 数 与 普 通 函 数 作 用 域 不 同,仅 在 本 文 件。只 在 当 前 源 文 件 中 使 用 的 函 数 应 该 说 明 为 内 部 函 数(static),内 部 函 数 应 该 在 当 前 源 文 件 中 说 明 和 定 义。对 于 可 在 当 前 源 文 件 以 外 使
7、 用 的 函 数,应 该 在 一 个 头 文 件 中 说 明,要 使 用 这 些 函 数 的 源 文 件 要 包 含 这 个 头 文 件综 上 所 述:static全 局 变 量 与 普 通 的 全 局 变 量 有 什 么 区 别:static全 局 变 量 只 初 使 化 一 次,防 止 在 其 他 文 件 单 元 中 被 引 用;static局 部 变 量 和 普 通 局 部 变 量 有 什 么 区 别:static局 部 变 量 只 被 初 始 化 一 次,下 一 次 依 据 上 一 次 结 果 值;static函 数 与 普 通 函 数 有 什 么 区 别:static函 数 在 内
8、存 中 只 有 一 份,普 通 函 数 在 每 个 被 调 用 中 维 持 一 份 拷 贝 6、程 序 的 局 部 变 量 存 在 于(堆 栈)中,全 局 变 量 存 在 于(静 态 区)中,动 态 申 请 数 据 存 在 于(堆)中。7、设 有 以 下 说 明 和 定 义:typedef union(long i;int k5;char c;DATE;struct data(int cat;DATE cow;double dog;too;DATE max;则 语 句 printf(%d,sizeof(struct data)+sizeof(max);的 执 行 结 果 是:52考 点:区 别
9、 struct与 union.(一 般 假 定 在 3 2位 机 器 上)答:DATE是 一 个 u n io n,变 量 公 用 空 间.里 面 最 大 的 变 量 类 型 是 in t5,占 用 2 0个 字 节.所 以 它 的 大 小 是 20.d ata是 一 个 struct,每 个 变 量 分 开 占 用 空 间.依 次 为 int4+DATE20+double8=3 2.所 以 结 果 是 20+32=52.当 然 在 某 些 1 6位 编 辑 器 下,in t可 能 是 2 字 节,那 么 结 果 是 int2+DATE 10+double8=208、队 列 和 栈 有 什 么
10、 区 别?队 列 先 进 先 出,栈 后 进 先 出 9、写 出 下 列 代 码 的 输 出 内 容#include int inc(int a)retum(+a);int multi(int*a,int*b,int*c)retum(*c=*a*b);typedef int(FUNCl)(int in);typedef int(FUNC2)(int*,int*,int*);void show(FUNC2 fun,int argl,int*arg2)(FUNCI p=&inc;int temp=p(argl);fun(&temp,&argl,arg2);printf(%dn,*arg2);)ma
11、in()int a;局 部 变 量 a 为 0;show(multi,10,&a);return 0;)答:11010、请 找 出 下 面 代 码 中 的 所 有 错 误(题 目 不 错,值 得 一 看)说 明:以 下 代 码 是 把 一 个 字 符 串 倒 序,如“abed”倒 序 后 变 为“deba”#includestring.hmain()(char*src=hello,world;char*dest=NULL;int len=strlen(src);dest:=(char*)malloc(len);char*d=dest;char*s=srclen;while(len!=0)d+=
12、s-;printf(%s,dest);return 0;)答:方 法 1:一 共 有 4 个 错 误;int main()char*src=hello,world;int len=strlen(src);char*dest=(char*)malloc(len+l);要 为 分 配 b空 间 char*d=dest;char*s=&srclen-l;/指 向 最 后 一 个 字 符 while(len!=0)*d+=*s-;*d=0;尾 部 要 加 0printf(%sn,dest);free(dest);/使 用 完,应 当 释 放 空 间,以 免 造 成 内 存 汇 泄 露 dest=NUL
13、L;防 止 产 生 野 指 针 return 0;)方 法 2:(方 法 一 需 要 额 外 的 存 储 空 间,效 率 不 高.)不 错 的 想 法#include#include main()(char str=hello,world;int len=strlen(str);char t;for(int i=0;ilen/2;i+)t=str;str=strlen-i-l;小 心 一 点strlen-i-l=t;)printf(%s,str);return 0;)11.对 于 一 个 频 繁 使 用 的 短 小 函 数,在 C 语 言 中 应 用 什 么 实 现,在 C+中 应 用 什 么
14、 实 现?c 用 宏 定 义,C+用 inline12.直 接 链 接 两 个 信 令 点 的 一 组 链 路 称 作 什 么?PPP点 到 点 连 接 13.接 入 网 用 的 是 什 么 接 口?V 5接 口 14.voip都 用 了 那 些 协 议?H.323协 议 簇、SIP协 议、Skype协 议、H.248和 MGCP协 议 15.软 件 测 试 都 有 那 些 种 类?黑 盒:针 对 系 统 功 能 的 测 试 白 盒:测 试 函 数 功 能,各 函 数 接 口 16.确 定 模 块 的 功 能 和 模 块 的 接 口 是 在 软 件 设 计 的 那 个 队 段 完 成 的?概
15、要 设 计 阶 段 17.unsigned char*p 1;unsigned long*p2;p(unsigned char*)0 x801000;p2=(unsigned long*)0 x810000;请 问 p l+5=;p 2+5=;答 案:0 x801005(相 当 于 加 上 5 位)0 x810014(相 当 于 加 上 2 0位);选 择 题:21.Ethtemet链 接 到 Internet用 到 以 下 那 个 协 议?DA.HDLC;B.ARP;C.UDP;D.TCP;E.ID22.属 于 网 络 层 协 议 的 是 B C)A.TCP;B.IP;C.ICMP;D.X.
16、2523.Windows消 息 调 度 机 制 是 C)A.指 令 队 列;B.指 令 堆 栈;C.消 息 队 列;D.消 息 堆 栈;找 错 题:25.请 问 下 面 程 序 有 什 么 错 误?int a602501000,ij,k;for(k=0;kMax_GT_Length)return GT Length ERROR;答:死 循 环 问 答 题:29.IP P hone的 原 理 是 什 么?I P 电 话(又 称 IPPHONE或 VoIP)是 建 立 在 I P技 术 上 的 分 组 化、数 字 化 传 输 技 术,其 基 本 原 理 是:通 过 语 音 压 缩 算 法 对 语
17、音 数 据 进 行 压 缩 编 码 处 理,然 后 把 这 些 语 音 数 据 按 IP等 相 关 协 议 进 行 打 包,经 过 I P 网 络 把 数 据 包 传 输 到 接 收 地,再 把 这 些 语 音 数 据 包 串 起 来,经 过 解 码 解 压 处 理 后,恢 复 成 原 来 的 语 音 信 号,从 而 达 到 由 I P 网 络 传 送 语 音 的 目 的。30.TCP/IP通 信 建 立 的 过 程 怎 样,端 口 有 什 么 作 用?三 次 握 手,确 定 是 哪 个 应 用 程 序 使 用 该 协 议 31.1号 信 令 和 7 号 信 令 有 什 么 区 别,我 国 某
18、 前 广 泛 使 用 的 是 那 一 种?1 号 信 令 接 续 慢,但 是 稳 定,可 靠。7 号 信 令 的 特 点 是:信 令 速 度 快,具 有 提 供 大 量 信 令 的 潜 力,具 有 改 变 和 增 加 信 令 的 灵 活 性,便 于 开 放 新 业 务,在 通 话 时 可 以 随 意 处 理 信 令,成 本 低。目 前 得 到 广 泛 应 用。32.列 举 5 种 以 上 的 电 话 新 业 务 如“闹 钟 服 务”、“免 干 扰 服 务”、“热 线 服 务”、“转 移 呼 叫”、“遇 忙 回 叫”、“缺 席 用 户 服 务”、“追 查 恶 意 呼 叫”、“三 方 通 话”、“
19、会 议 电 话”、“呼 出 限 制”、“来 电 显 示”、“虚 拟 网 电 话”等 四.找 错 题:1.请 问 下 面 程 序 有 什 么 错 误?int a602501000,ij,k;for(k=0;k=1000;k+)for(j=0;j250;j+)for(i=0;i60;i+)a 皿 k=0;答:把 循 环 语 句 内 外 换 一 下 2.#define Max CB 500void LmiQueryCSmd(Struct MSgCB*pmsg)(unsigned char ucCmdNum;for(ucCmdNum=0;ucCmdNumMax_CB;ucCmdNum+)答:死 循 环
20、,unsigned in t的 取 值 范 围 是 0-2553.以 下 是 求 一 个 数 的 平 方 的 程 序,请 找 出 错 误:#define SQUARE(a)(a)*(a)int a=5;int b;b=SQUARE(a+);答:结 果 与 编 译 器 相 关,得 到 的 可 能 不 是 平 方 值.微 软 亚 洲 技 术 中 心 的 面 试 题!1.进 程 和 线 程 的 差 别。答:线 程 是 指 进 程 内 的 一 个 执 行 单 元,也 是 进 程 内 的 可 调 度 实 体.与 进 程 的 区 别:(1)调 度:线 程 作 为 调 度 和 分 配 的 基 本 单 位,进
21、 程 作 为 拥 有 资 源 的 基 本 单 位(2)并 发 性:不 仅 进 程 之 间 可 以 并 发 执 行,同 一 个 进 程 的 多 个 线 程 之 间 也 可 并 发 执 行(3)拥 有 资 源:进 程 是 拥 有 资 源 的 一 个 独 立 单 位,线 程 不 拥 有 系 统 资 源,但 可 以 访 问 隶 属 于 进 程 的 资 源.(4)系 统 开 销:在 创 建 或 撤 消 进 程 时,由 于 系 统 都 要 为 之 分 配 和 回 收 资 源,导 致 系 统 的 开 销 明 显 大 于 创 建 或 撤 消 线 程 时 的 开 销。2.测 试 方 法 答:人 工 测 试:个
22、人 复 查、抽 查 和 会 审 机 器 测 试:黑 盒 测 试 和 白 盒 测 试 3.Heap与 stack的 差 别。答:He叩 是 堆,stack是 栈。Stack的 空 间 由 操 作 系 统 自 动 分 配/释 放,Heap上 的 空 间 手 动 分 配/释 放。Stack空 间 有 限,Heap是 很 大 的 自 由 存 储 区 C 中 的 malloc函 数 分 配 的 内 存 空 间 即 在 堆 上,C+中 对 应 的 是 new操 作 符。程 序 在 编 译 期 对 变 量 和 函 数 分 配 内 存 都 在 栈 上 进 行,且 程 序 运 行 过 程 中 函 数 调 用 时
23、 参 数 的 传 递 也 在 栈 上 进 行 4.Windows下 的 内 存 是 如 何 管 理 的?分 页 管 理 8.谈 谈 IA32下 的 分 页 机 制 小 页(4K)两 级 分 页 模 式,大 页(4M)一 级 9.给 两 个 变 量,如 何 找 出 一 个 带 环 单 链 表 中 是 什 么 地 方 出 现 环 的?一 个 递 增 一,一 个 递 增 二,他 们 指 向 同 一 个 接 点 时 就 是 环 出 现 的 地 方 10.在 IA32中 一 共 有 多 少 种 办 法 从 用 户 态 跳 到 内 核 态?通 过 调 用 门,从 ring3到 ringO,中 断 从 ri
24、ng3到 ring。,进 入 vm86等 等 11.如 果 只 想 让 程 序 有 一 个 实 例 运 行,不 能 运 行 两 个。像 winamp一 样,只 能 开 一 个 窗 口,怎 样 实 现?用 内 存 映 射 或 全 局 原 子(互 斥 变 量)、查 找 窗 口 句 柄.FindW indow,互 斥,写 标 志 到 文 件 或 注 册 表,共 享 内 存。.12.如 何 截 取 键 盘 的 响 应,让 所 有 的 匕 变 成 七?答:键 盘 钩 子 SetWindowsHookEx14.存 储 过 程 是 什 么?有 什 么 用?有 什 么 优 点?答:我 的 理 解 就 是 一
25、堆 sq l的 集 合,可 以 建 立 非 常 复 杂 的 查 询,编 译 运 行,所 以 运 行 一 次 后,以 后 再 运 行 速 度 比 单 独 执 行 SQL快 很 多 15.Template有 什 么 特 点?什 么 时 候 用?答:Template可 以 独 立 于 任 何 特 定 的 类 型 编 写 代 码,是 泛 型 编 程 的 基 础.当 我 们 编 写 的 类 和 函 数 能 够 多 态 的 用 于 跨 越 编 译 时 不 相 关 的 类 型 时,用 Template.模 板 主 要 用 于 STL中 的 容 器,算 法,迭 代 器 等 以 及 模 板 元 编 程.(C+的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 经典 试题
限制150内