四个搞笑漫画面试技巧it公司_第1页
四个搞笑漫画面试技巧it公司_第2页
四个搞笑漫画面试技巧it公司_第3页
四个搞笑漫画面试技巧it公司_第4页
四个搞笑漫画面试技巧it公司_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 / 28 四个搞笑漫画面试技巧 it 公司 2016 各大 IT公司笔试面试题目 分类: C+ 语法知识 2016-02-12 11:05 563 人阅读 评论 收藏 举报 百度面试题 1、进程切换需要注意哪些问题? 保存处理器 PC 寄存器的值到被中止进程的私有堆栈;保存处理器 PSW寄存器的值到被中止进程的私有堆栈; 保存处理器 SP寄存器的值到被中止进程的进程控制块; 保存处理器其他寄存器的值到被中止进程的私有堆栈; 自侍运行进程的进程控制块取 SP 值并 存入处理器的寄存器 SP; 自侍运行进程的私有堆栈恢复处理器各寄存器的值; 自侍运行进程的私有堆栈中弹出 PSW 值并送入处理器的 PSW; 自侍运行进程的私有堆栈中弹出 PC值并送入处理器的 PC。 2、输入一个升序数组,然后在数组中快速寻找两个数字,其和等于一个给定的值。 这个编程之美上面有这个题目的,很简单的,用两个指针一个指向数组前面,一个指向数组的后面,遍历一遍就可以了。 3、有一个名人和很多平民在一块,平民都认识这个2 / 28 名人,但是这个名人不认识任何一个平民,任意 两个平民之间是否认识是未知的,请设计一个算法,快速找出这些人中的那个名人。 已知已经实现了一个函数 bool know 这个函数返回 true的时候,表明 a 认识 b,返回 false的时候表明 a 不认识 b。 思路:首先将 n个人分为 n/2组,每一组有 2 个人,然后每个组的两个人调用这个 know 函数,假设为 know,返回 true的时候说明 a 认识 b,则 a 肯定不是名人, a 可以排除掉了,依次类推,每个组都调用这个函数依次,那么 n 个人中就有 n/2 个人被排除掉了,数据规模将为 n/2。同理在剩下的 n/2个人中在使用这 个方法,那么规模就会将为 n/4,这样所有的遍历次数为 n/2+n/4+n/8+. 这个一个等比数列,时间复杂度为 o。 4、判断一个自然数是否是某个数的平方。当然不能使用开方运算。 方法 1: 遍历从 1到 N 的数字,求取平方并和 N进行比较。 如果平方小于 N,则继续遍历;如果等于 N,则成功退出;如果大于 N,则失败退出。 复杂度为 O。 方法 2: 使用二分查找法,对 1 到 N 之间的数字进行判断。 3 / 28 复杂度为 O。 方法 3: 由于 =n + 2n + 1, = . = 1 + + + . + 注意到这些项构成了等差数列。 所以我们可以比较 N-1, N - 1 - 3, N - 1 - 3 - 5 . 和 0的关系。 如果大于 0,则继续减;如果等于 0,则成功退出;如果小于 0,则失败退出。 复杂度为 O。不过方法 3中利用加减法替换掉了方法1 中的乘法,所以速度会更快些。 例如 : 3 = 9 = 1 + 2*1+1 + 2*2+1 = 1 + 3 + 5 4 = 16 = 1 + 2*1 + 1 + 2*2+1 + 2*3+1 view plain 1. 2. 3. 4. 5. 4 / 28 6. 7. 8. 9. int square int i = 1; n = n - i; while i += 2; n -= i; 10. if /是某个数的平方 1; 12. else /不是某个数的平方 0; 14. 百度校园招聘会笔试题 一、算法设计 1、设 rand 返回 s,t之间的随机小数,利用该函数在一个半径为 R的圆内找随机 n个点,并给出时间复杂度分析。 思路:这个使用数学中的极坐标来解决,先调用 s1,t1随机产生一个数 r,归一化后乘以半径,得到 R*/,然后在调用 s2, t2随机产生一个数 a,归一化后得到 角度:360*/ 2、为分析用户行为,系统常需存储用户的一些query,但因 query 非常多,故系统不能全存,设系统每天5 / 28 只存 m 个 query,现设计一个算法,对用户请求的 query 进行随机选择 m个,请给一个方案,使得每个 query 被抽中的概率相等,并分析之,注意:不到最后一刻,并不知用户的总请求量。 思路:如果用户查询的数量小于 m,那么直接就存起来。如果用户查询的数量大于 m,假设为 m+i,那么在1-m+i 之间随机产生一个数,如果选择的是前面 m 条查询进行存取,那么概率为 m/,如 果选择的是后面 i 条记录中的查询,那么用这个记录来替换前面 m条查询记录的概率为m/*=/,当查询记录量很大的时候, m/= /,所以每个 query被抽中的概率是相等的。 3、 C+ STL 中 vector 的相关问题: 、调用 push_back 时,其内部的内存分配是如何进行的? 、调用 clear 时,内部是如何具体实现的?若想将其内存释放,该如何操作? vector的工作原理是系统预先分配一块 CAPACITY大小的空间,当插入的数据超过这个空间的时候,这块空间会让某 种方式扩展,但是你删除数据的时候,它却不会缩小。 vector 为了防止大量分配连续内存的开销,保持一块默认的尺寸的内存, clear 只是清数据了,未清内存,因为 vector的 capacity 容量未变化,系统维护一个的默认值。 6 / 28 有什么方法可以释放掉 vector中占用的全部内存呢 ? 标准的解决方法如下 template void ClearVector vector vtTemp; ; 事实上, vector 根本就不管内存,它只是负责向内存管理框架 acquire/release 内存,内存管理框架如果发现内存不够了,就 malloc,但是当 vector释放资源的时候 , stl根本就不调用 free 以减少内存,因为内存分配在 stl 的底层: stl 假定如果你需要更多的资源就代表你以后也可能需要这么多资源,所以就没必要不停地 malloc/free。如果是这个逻辑的话这可能是个 trade-off 一般的 STL 内存管理器 allocator 都是用内存池来管理内存的,所以某个容器申请内存或释放内存都只 是影响到内存池的剩余内存量,而不是真的把内存归还给系统。这样做一是为了避免内存碎片,二是提高了内存申请和释放的效率 不用每次都在系统内存里寻找一番。 二、系统设计 正常用户端每分钟最多发一个请求至服务端,服务7 / 28 端需做一个异常客户端行为的过滤系统,设服务器在某一刻收到客户端 A的一个请求,则 1分钟内的客户端任何其它请求都需要被过滤,现知每一客户端都有一个 IPv6 地址可作为其 ID,客户端个数太多,以至于无法全部放到单台服务器的内存 hash 表中,现需简单设计一个系统,使用支持高效的过滤,可 使用多台机器,但要求使用的机器越少越好,请将关键的设计和思想用图表和代码表现出来。 三、求一个全排列函数: 如 p 输出: 123、 132、 213、 231、 321、 323 求一个组合函数 如 p 输出: 1、 2、 3、 1,2、 2,3、 1,3、 1,2,3 这两问可以用伪代码。 网易游戏校园招聘会笔试题 1、对于一个内存地址是 32 位、内存页是 8KB 的系统。 0X0005F123 这个地址的页号与页内偏移分别是多少。 2、如果 X 大于 0 并小于 65536,用移位法计算 X 乘以 255的值为: -X X 3、一个包含 n 个节点的四叉树,每个节点都有四个指向孩子节点的指针,这 4n个指针中有 3n+1 个空指针。 8 / 28 4、以下两个语句的区别是:第一个动态申请的空间里面的值是随机值,第二个进行了初始化,里面的值为 0 1. 2. int *p1 = new int10;int *p2 = new int10; 5、计算机在内存中存储数据时使用了大、小端模式,请分别写出 A=0X123456 在不同情况下的首字节是,大端模式: 0X12 小端模式: 0X56 X86 结构的计算机使用 小端 模式。 一般来说,大部分用户的操作系统是小端模式的。少部分,如 MAC OS,是大端模式 的。 6、在游戏设计中,经常会根据不同的游戏状态调用不同的函数,我们可以通过函数指针来实现这一功能,请声明一个参数为 int *,返回值为 int 的函数指针: int 7、下面程序运行后的结果为: to test something 1. str = glad to test something; char *p = str; 3. 4. 5. 6. 7. p+; int *p1 = static_cast; p1+; p = 9 / 28 static_cast; printf;8、在一冒险游戏里,你见到一个宝箱,身上有 N把钥匙,其中一把可以打开宝箱,假如没有任何提示,随机尝试,问: 恰好第 K 次打开宝箱的概率 是多少。 *)*)*) = 1/n 平均需要尝试多少次。 这个就是求期望值由于每次打开宝箱的概率都是1/n,则期望值为: 1*+2*+3*+.+n* = /2 亚信联创招聘会笔试题 1、对于如下程序: 1. 2. 3. 4. 5. 6. 7. 8. 9. #include using namespace std;class Apublic: A cout 10. ;11. 12. int main 13. 14. A a4, b,*p; 10 / 28 15. 会输出多少个 A? A、 2 B、 3C、 5 D、 6 p只是一个对象指针,并没有指向一个对象的内存空间,所以没有调用构造函数。 2、头文件中的 ifndef/define/endif 有什么作用? 答:防止该头文件被重复引用,避免变量、类型等被重新定义 。 3、 const 有什么用途? 答:可以定义 const 常量。 const 可以修饰函数的参数、返回值,甚至函数的定义体。被 const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 4、如下的字符串函数 ,用于生存一个字符串 ”连接号码异常” ,并返回它的指针 1. 2. 3. char* strfun char str20; 4. 5. 6. 11 / 28 7. 8. 9. strcpy; printf; /printf 语句 1 return str;void main 10. char *pstr = strfun; 11. printf;/printf 语句 2 12. 问题 1 : printf 语句 1 和 printf 语句 2 哪个能在屏幕上正在打印出来? 问题 2 : 如果不能正常在屏幕上打印出字符串,请说明原因。 问题 3 : 如果不修改 strfun 的声明,请问该如何修改上述程序的错误。 答: 问题 1:语句 1可以正常打印,语句 2不能正常打印; 问题 2:语句 2 使用的指针所指向的内存空间str20,在函数 strfun返回时已经被释放了; 问题 3:可以将函数 strfun 中的语句 char str20;改为 char *str = new char20; 5、下面是交换两个 double 型数据的函数, 1. 2. 3. 12 / 28 4. 5. 6. 7. 8. 9. void swap double *p; *p = *p1; *p1 = *p2; *p2 = *p; void main a = ; b = ; ; 13. 请找出上述代码的错误,指出错误的原因,并改正。 答:函数 swap中混淆了 double型指针与 double型变量的差别,对于一个未初始化的指针访问其内存空间是非常危险的。对 swap 函数修改如下: 1. 2. 3. 4. 5. 6. 7. void swap double p; p = *p1; *p1 = *p2; *p2 13 / 28 =p; IT知名企业常见面试题实例与详解 IT 名企面试步骤一般为四面:一面:技术面,考核技能水平;二面:综合面:考核综合素质;三面: HR面,职业规划,优势与劣势,期望工资与工作地点;四面:老总面,最后决定命运。 一、 通用面试例题分析 1. 在学校里你学习了哪些课程,成绩如何? 答:首先看看计算机专业的课程:系统原理、微机原理、汇编语言、网络基础、 Visual Basic 编程、 SQL、 HTML语言、高等数学 ?基本上以对计算机科学结构性、设计性的课程为主。然后是自动化专业,这张课表上少了汇编语言等系统基础的课程,增加了 POWER BUILDER、 NT Sever 等网络方面的内容,毕竟现在的自动化与网络密不可分。而信息管理工程专业的课程就显然偏重应用的色彩。除 VB、 VC 编程语 言 的 课 程 外 , Windows 、 Photoshop 、Flash/Firework/Dreamweaver 网页 制作工具等课程也赫然在目。 2. 想着手编写一个程序,在整个开发过程中,其中包含了大量细节,并推荐了许多步骤和文档,那么,时刻提醒自己注意的是什么问题?整个过程是什么? 答:时刻提醒自己注意的问题是: 14 / 28 对象是什么? 它们的接口是什么? 整个过程可划分为四个阶段,阶段 0 刚刚开始采用某些形式的结构。 阶段 0:拟出一个计划 第一步是决定在后面的过程中采取哪些步骤。 在这个阶段,可能要决定一些必要的附加处理结构。在整个过程中设置几个标志,或者“路标”,将更有益于你集中注意力。经过了一个接一个的路标以后,可对自己的进度有清晰的把握。 阶段 1:要制作什么? 在上一代程序设计中,这个阶段称为“建立需求分析和系统规格”。应尽可能总结出自己系统的一套完整的“使用条件”或者“应用场合”。 阶段 2:如何构建? 在这一阶段,必须拿出一套设计方案,并解释其中包含的各类对象在外观上是什么样子,以及相互间是如何沟通的。 阶段 3:开始创 建 全面的思考、周密的准备、良好的构造不仅使程序更易构建与调试,也使其更易理解和维护,而那正是一套软件赢利的必要条件。 15 / 28 构建好系统,并令其运行起来后,必须进行实际检验,以前做的那些需求分析和系统规格便可派上用场了。全面地考察自己的程序,确定提出的所有要求均已满足。现在一切似乎都该结束了? 阶段 4:校订 第一次做的东西并不完善,所以需为自己留下一个深入学习、认知的空间,再回过头去作一些改变”。对于要解决的问题,随着对它的学习和了解愈加深入,可能需要作出大量改动。 进行这些工作的一个动力是随着不断的改革优化,终于能够从自己的努力中得到回报,无论这需要经历一个较短还是较长的时期,达到理想的状态。 3. 什么是 UML? 答:是一种能够描述问题、描述解决方案、起沟通作用的语言。这就是 UML。 UML 是由 Rational 公司发明,目前由 OMG 维护。作为一种建模语言 ,UML的定义包括 UML语义和 UML表示法两个部分: UML语义 描述基于 UML 的精确元模型定义。元模型为 UML 的所有元素在语法和语义上提供了简单、一致、通 用的定义性说明 ,使开发者能在语义上取得一致 ,消除了因人而异的最佳表达方法所造成的影响。此外 UML还支持对元模型的扩展16 / 28 定义。 UML 表示法 定义 UML符号的表示法 ,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型 ,在语义上它是 UML 元模型的实例。标准建模语言 UML的重要内容可以由下列五类图来定义:用例图、静态图、行为图、交互图、实现图。 从应用的角度看 ,当采用面向对象技术设计系统时 ,首先是描述需求;其次根据需求建立系统 的静态模型,以构造系统的结构;第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图、对象图、组件图和配置图等五个图形,是标准建模语言 UML 的静态建模机制。其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等四个图形 ,是标准建模语言 UML 的动态建模机制。因此,标准建模语言 UML 的主要内容也可以归纳为静态建模机制和动态建模机制两大类。 4. 什么是软件重用? 答:软件重用是软件工程中最重要的思想 之一,只有软件重用,才能降低软件成本,提高软件的质量。你在对一个软件进行分析的时候,找出可以重用的对象,有助于你开发高效的软件系统。正如前面所说的,你不必把软件分析17 / 28 的过分细致,你只需从中找出关键性的、能够重用的对象就足够了。剩下的事情,就是对这些对象分配属性和方法,并充分的使用这些对象就好了。 1) 编写项目视图和范围文档 系统的需求包括四个不同的层次:业务需求、用户需求和功能需求、非功能性需求。 2) 用户群分类 用户分成不同的用户类。与 UML中 Usecase 的 Actor概念一样,用户类不一定都指人,也可以包括其他应用系统、接口或者硬件,这样做使得与系统边界外的接口也成为系统需求。 3) 选择用户代表 4) 建立核心队伍 5) 确定使用实例 6) 召开联合会议 7) 分析用户工作流程 8) 确定质量属性 9) 检查问题报告 10) 需求重用 5. 谈谈 CMMI的起源 答:随着人们对 CMM 研究的不断深入,其他学科也结合本系统的特点,陆续推出了自己 的 CMM模型。例如,人18 / 28 力资源能力成熟度模型、系统工程能力成熟度模型等等: SW-CMM 软件 CMM SE-CMM 系统工程 CMM SA-CMM 软件采购 CMM IPT-CMM 集成产品群组 CMM P-CMM 人力资源能力成熟度模型 为了以示区别,国内外很多资料把 CMM叫做 SW-CMM。 6. ERP是个什么概念? 答:本世纪 90 年代初,美国著名的 IT 分析公司Gartner Group Inc根据当时计算 机信息处理技术 IT的管理。 4) 在事务处理控制方面的差别 MRP-是通过计划的及时滚动来控制整个生产过程,它的实时性较差,一般只有实现事中控制。而 ERP系统支持在线分析处理 OLAP经营事务处理方面的差别 1、将一整数逆序后放入一数组中 void convert if convert; *result = n%10; int main int n = 123456789, result20=; 19 / 28 convert; printf; for printf; 2、求高于平均分的学生学号及成绩 double find int number, score, average; scanf; if scanf; average = find; if printf; return average; else printf; return total/n; int main find; 20 / 28 3、递归实现回文判断 int find if return 1; else ifreturn find; else return 0; int main char *str = abcdedcba; printf) ? Yes : No); 4、组合问题 void find if while printf; else int i, j; for; for; for resultj = *source+; resultj+1 = 0; 21 / 28 find; int main int const n = 3; char *source = ABCDE, resultn+1 = 0; if0 & n find; 5、分解成质因数 void prim if while n+; m /= n; prim; printf; int main int n = 435234; printf; prim; 22 / 28 6、寻找迷宫的一条出路, o:通路; X:障碍。 #define MAX_SIZE 8 int H4 = 0, 1, 0, -1; int V4 = -1, 0, 1, 0; char MazeMAX_SIZEMAX_SIZE = X,X,X,X,X,X,X,X, o,o,o,o,o,X,X,X, X,o,X,X,o,o,o,X, X,o,X,X,o,X,X,o, X,o,X,X,X,X,X,X, X,o,X,X,o,o,o,X, X,o,o,o,o,X,o,o, X,X,X,X,X,X,X,X; void FindPath if for for printf; else for if MazeXY = ; FindPath; 23 / 28 MazeXY =o; int main FindPath; 7、随机分配座位,共 50个学生,使学号相邻的同学座位不能相邻 int Tmp = 0, Count = 50; int Seats = new intCount; bool Students = new boolCount; RandStudent=new ; StudentsSeats0=true; for Tmp=; if& & != -1) Seatsi+ = Tmp; StudentsTmp = true; foreach 24 / 28 ; ; 8、求网格中的黑点分布。现有 6*7 的网格,在某些格子中有黑点,已知各行与各列中有黑 点的点数之和,请在这张网格中画出黑点的位置。 #define ROWS 6 #define COLS 7 int i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论