logo资料库

2014年百度校园招聘南京站PC客户端开发笔试题.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
2014年百度校园招聘南京站PC客户端开发笔试题
2014 年百度校园招聘南京站 PC 客户端开发笔试题 一 、 问 答 题 : 50 分 1、 写 出 new 和 malloc、 delete 和 free 的 区 别 从 面 向 对 象 来 说 ,new/delete 和 malloc/free 的 区 别 是 :malloc/free 只 是 单 纯 的 进 行 内 存 空 间 的 分 配 和 释 放 , 而 使 用 new/delete 时 , 不 仅 分 配 了 内 存 空 间 ,若 new/delete 的 是 一 个 类 ,还 会 调 用 类 (经 测 试 ,基 本 类 型 好 像 不 会 进 行 默 认 初 始 化 )的 构 造 函 数 或 析 构 函 数 。 简 单 来 说 , 两 者 的 区 别 主 要 有 : 1. malloc 与 free 是 C++/C 语 言 的 标 准 库 函 数 , new/delete 是 C++的 运 算 符 , 与 ” +“ 、 ” -“ 、 ” *“ 、 ” /“ 有 一 样 的 地 位 。 2. new/delete 是 可 以 重 载 的 , 而 重 载 之 后 , 就 成 为 了 函 数 。 3. malloc 在 申 请 内 存 的 时 候 , 必 须 要 提 供 申 请 的 长 度 , 而 且 返 回 的 指 针 是 void*型 , 必 须 要 强 转 成 需 要 的 类 型 。 4. 当 new/delete 在 类 中 被 重 载 的 时 候 ,可 以 自 定 义 申 请 过 程 ,比 如 记 录 所 申 请 内 存 的 总 长 度 , 以 及 跟 踪 每 个 对 象 的 指 针 。 5. new/delete, 其 实 内 部 也 调 用 了 malloc/free。 两 者 的 共 同 点 有 : 1. 都 必 须 配 对 使 用 , 防 止 内 存 泄 露 。 2. 都 可 用 于 申 请 动 态 内 存 和 释 放 内 存 , 都 是 在 堆 中 分 配 内 存 。 3. free 和 delete 可 以 释 放 NULL 指 针 。 2、 写 两 个 继 承 类 , 解 释 虚 表 指 针 和 虚 表 的 作 用 每 一 个 类 都 有 虚 表 。 虚 表 可 以 继 承 ,如 果 子 类 没 有 重 写 虚 函 数 ,那 么 子 类 虚 表 中 仍 然 会 有 该 函 数 的 地 址 , 只 不 过 这 个 地 址 指 向 的 是 基 类 的 虚 函 数 实 现 。 如 果 基 类 有 3 个 虚 函 数 , 那 么 基 类 的 虚 表 中 就 有 三 项 (虚 函 数 地 址 ),派 生 类 也 会 有 虚 表 ,至 少 有 三 项 ,如 果 重 写 了 相 应 的 虚 函 数 , 那 么 虚 表 中 的 地 址 就 会 改 变 , 指 向 自 身 的 虚 函 数 实 现 。 如 果 派 生 类 有 自 己 的 虚 函 数 , 那 么 虚 表 中 就 会 添 加 该 项 。
派 生 类 的 虚 表 中 虚 函 数 地 址 的 排 列 顺 序 和 基 类 的 虚 表 中 虚 函 数 地 址 排 列 顺 序 相 同 。 3、 写 出 static 的 用 法 和 作 用 static 是 C++中 很 常 用 的 修 饰 符 ,它 被 用 来 控 制 变 量 的 存 储 方 式 和 可 见 性 。 函 数 内 部 定 义 的 变 量 , 在 程 序 执 行 到 它 的 定 义 处 时 , 编 译 器 为 它 在 栈 上 分 配 空 间 ,大 家 知 道 ,函 数 在 栈 上 分 配 的 空 间 在 此 函 数 执 行 结 束 时 会 释 放 掉 , 这 样 就 产 生 了 一 个 问 题 : 如 果 想 将 函 数 中 此 变 量 的 值 保 存 至 下 一 次 调 用 时 ,如 何 实 现 ? 最 容 易 想 到 的 方 法 是 定 义 一 个 全 局 的 变 量 ,但 定 义 为 一 个 全 局 变 量 有 许 多 缺 点 , 最 明 显 的 缺 点 是 破 坏 了 此 变 量 的 访 问 范 围 (使 得 在 此 函 数 中 定 义 的 变 量 , 不 仅 仅 受 此 函 数 控 制 )。 需 要 一 个 数 据 对 象 为 整 个 类 而 非 某 个 对 象 服 务 ,同 时 又 力 求 不 破 坏 类 的 封 装 性 ,即 要 求 此 成 员 隐 藏 在 类 的 内 部 , 对 外 不 可 见 。 4、 写 出 计 算 机 的 存 储 器 层 次 , 及 原 因 以 处 理 器 为 中 心 , 计 算 机 系 统 的 存 储 依 次 为 寄 存 器 、 高 速 缓 存 、 主 存 储 器 、 磁 盘 缓 存 、磁 盘 和 可 移 动 存 储 介 质 等 7 个 层 次 。距 离 处 理 器 越 近 的 存 储 工 作 速 度 越 高 ,容 量 越 小 。其 中 ,寄 存 器 、高 速 缓 存 、主 存 储 器 为 操 作 系 统 存 储 管 理 的 管 辖 范 围 , 磁 盘 和 可 移 动 存 储 介 质 属 于 操 作 系 统 设 备 管 理 的 管 辖 范 围 。 5、 写 出 对 windows 中 的 句 柄 的 理 解 所 谓 句 柄 实 际 上 是 一 个 数 据 , 是 一 个 Long (整 长 型 )的 数 据 。 句 柄 是 WONDOWS 用 来 标 识 被 应 用 程 序 所 建 立 或 使 用 的 对 象 的 唯 一 整 数 , WINDOWS 使 用 各 种 各 样 的 句 柄 标 识 诸 如 应 用 程 序 实 例 , 窗 口 , 控 制 , 位 图 , GDI 对 象 等 等 。 WINDOWS 句 柄 有 点 象 C 语 言 中 的 文 件 句 柄 。 二 、 算 法 题 : 30 分 1、 计 算 字 符 串 的 相 似 度 -《 编 程 之 美 》 3.3 int calStringDis(string strA, int pABegin,int pAEnd,string strB, int pBBegin,int pBEnd) {
if (pABegin > pAEnd) { if (pBBegin > pBEnd) return 0; else return pBEnd – pBBegin + 1; } if (pBBegin > pBEnd) { if(pABegin > pAEnd) return 0; else return pAEnd – pABegin + 1; } if (strA[pABegin] == strB[pBBegin]) { return calStringDis(strA,pABegin+1,pAEnd,strB,pBBegin+1,pBEnd); } else { int t1 = calStringDis(strA,pABegin+1,pAEnd,strB,pBBegin+2,pBEnd); int t2 = calStringDis(strA,pABegin+2,pAEnd,strB,pBBegin+1,pBEnd); int t3 = calStringDis(strA,pABegin+2,pAEnd,strB,pBBegin+2,pBEnd); return minValue(t1,t2,t3)+1; } }
2、 判 断 链 表 是 否 存 在 闭 环 //using step1 and step2 here //if exists a loop, then the pointer which use step2 will catch up with the pointer which uses step1 int HasLoop(LinkList L) { int step1 = 1; int step2 = 2; LinkList p = L; LinkList q = L; //while (p != NULL && q != NULL && q->next == NULL) while (p != NULL && q != NULL && q->next != NULL) { p = p->next; if (q->next != NULL) q = q->next->next; printf("p:%d, q:%d \n", p->data, q->data); if (p == q) return 1; } return 0; } 三 、 系 统 设 计 题 : 选 做 一 题 20 分
1、 连 连 看 游 戏 中 , 写 出 两 种 算 法 的 大 致 原 理 , 来 判 断 两 个 图 案 是 否 能 够 连 线 。 并 详 细 解 释 , 写 出 其 中 一 个 算 法 的 伪 代 码 。 2、 解 释 延 迟 过 程 调 用 deferred procedure call (DPC)和 异 步 过 程 调 用 asynchronous procdure call (APC)的 工 作 机 制 。 详 细 描 述 利 用 APC 实 现 DLL 注 入 。
分享到:
收藏