it笔试题目.docx
《it笔试题目.docx》由会员分享,可在线阅读,更多相关《it笔试题目.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 it笔试题目辩论赛题目推举度:军训作文题目推举度:傅雷家书题目及答案推举度:建党百年题目作文推举度: it笔试题目 it行业是信息技术产业,也是现代热门求职行业。it的笔试题目有哪些呢? it笔试题目(1) 1、有一个名人和许多平民在一块,平民都熟悉这个名人,但是这个名人不熟悉任何一个平民,任意两个平民之间是否熟悉是未知的,请设计一个算法,快速找个这个人中的那个名人。 已知已经实现了一个函数 bool know(int a,int b) 这个函数返回true的时候,说明a熟悉b,返回false的时候说明a不熟悉b。 思路:首先将n个人分为n/2组,每一组有2个人,然后每个组的两个人调用这个k
2、now函数,假设为know(a,b),返回true的时候说明a熟悉b,则a确定不是名人,a可以排解掉了,依次类推,每个组都调用这个函数依次,那么n个人中就有n/2个人被排解掉了,数据规模将为n/2。同理在剩下的n/2个人中在使用这个方法,那么规模就会将为n/4,这样全部的遍历次数为n/2+n/4+n/8+. 这个一个等比数列,时间简单度为o(n)。 2、进程切换需要留意哪些问题? 保存处理器PC存放器的值到被中止进程的私有堆栈; 保存处理器PSW存放器的值到被中止进程的私有堆栈; 保存处理器SP存放器的值到被中止进程的进程掌握块; 保存处理器其他存放器的值到被中止进程的私有堆栈; 自待运行进程
3、的进程掌握块取SP值并存入处理器的存放器SP; 自待运行进程的私有堆栈恢复处理器各存放器的值; 自待运行进程的私有堆栈中弹出PSW值并送入处理器的PSW; 自待运行进程的私有堆栈中弹出PC值并送入处理器的PC。 3、输入一个升序数组,然后在数组中快速查找两个数字,其和等于一个给定的值。 这个编程之美上面有这个题目的,很简洁的,用两个指针一个指向数组前面,一个指向数组的后面,遍历一遍就可以了。 4、推断一个自然数是否是某个数的平方。固然不能使用开方运算。 方法1: 遍历从1到N的数字,求取平方并和N进展比拟。 假如平方小于N,则连续遍历;假如等于N,则胜利退出;假如大于N,则失败退出。 简单度为
4、O(n0.5)。 方法2: 使用二分查找法,对1到N之间的数字进展推断。 简单度为O(log n)。 方法3: 由于 (n+1)2 =n2 + 2n + 1, = . = 1 + (2*1 + 1) + (2*2 + 1) + . + (2*n + 1) 留意到这些项构成了等差数列(每项之间相差2)。 所以我们可以比拟 N-1, N - 1 - 3, N - 1 - 3 - 5 . 和0的关系。 假如大于0,则连续减;假如等于0,则胜利退出;假如小于 0,则失败退出。 简单度为O(n0.5)。不过方法3中利用加减法替换掉了方法1中的乘法,所以速度会更快些。 例如:32 = 9 = 1 + 2*
5、1+1 + 2*2+1 = 1 + 3 + 5 42 = 16 = 1 + 2*1 + 1 + 2*2+1 + 2*3+1 int square(int n) int i = 1; n = n - i; while( n 0 ) i += 2; n -= i; if( n = 0 ) /是某个数的平方 return 1; else /不是某个数的平方 return 0; it笔试题目(2) 一、算法设计 1、设rand(s,t)返回s,t之间的随机小数,利用该函数在一个半径为R的圆内找随机n个点,并给出时间简单度分析。 思路:这个使用数学中的极坐标来解决,先调用s1,t1随机产生一个数r,归一
6、化后乘以半径,得到R*(r-s1)/(t1-s1),然后在调用s2,t2随机产生一个数a,归一化后得到角度:360*(a-s2)/(t2-s2) 2、为分析用户行为,系统常需存储用户的一些query,但因query特别多,故系统不能全存,设系统每天只存m个query,现设计一个算法,对用户恳求的query进展随机选择m个,请给一个方案,使得每个query被抽中的概率相等,并分析之,留意:不到最终一刻,并不知用户的总恳求量。 思路:假如用户查询的数量小于m,那么直接就存起来。假如用户查询的数量大于m,假设为m+i,那么在1-m+i之间随机产生一个数,假如选择的是前面m条查询进展存取,那么概率为m
7、/(m+i),假如选择的是后面i条记录中的查询,那么用这个记录来替换前面m条查询记录的概率为m/(m+i)*(1-1/m)=(m-1)/(m+i),当查询记录量很大的时候,m/(m+i)= (m-1)/(m+i),所以每个query被抽中的概率是相等的。 3、C+ STL中vector的相关问题: (1)、调用push_back时,其内部的内存安排是如何进展的? (2)、调用clear时,内部是如何详细实现的?若想将其内存释放,该如何操作? vector的工作原理是系统预先安排一块CAPACITY大小的空间,当插入的数据超过这个空间的时候,这块空间会让某种方式扩展,但是你删除数据的时候,它却不
8、会缩小。 vector为了防止大量安排连续内存的开销,保持一块默认的尺寸的内存,clear只是清数据了,未清内存,由于vector的capacity容量未变化,系统维护一个的默认值。 有什么方法可以释放掉vector中占用的全部内存呢? 标准的解决方法如下 template class T void ClearVector( vector T vt ) vector T vtTemp; veTemp.swap( vt ); 事实上,vector根本就不管内存,它只是负责向内存治理框架acquire/release内存,内存治理框架假如发觉内存不够了,就malloc,但是当vector释放资源的
9、时候(比方destruct), stl根本就不调用free以削减内存,由于内存安排在stl的底层:stl假定假如你需要更多的资源就代表你以后也可能需要这么多资源(你的list, hashmap也是用这些内存),所以就没必要不停地malloc/free。假如是这个规律的话这可能是个trade-off 一般的STL内存治理器allocator都是用内存池来治理内存的,所以某个容器申请内存或释放内存都只是影响到内存池的剩余内存量,而不是真的把内存归还给系统。这样做一是为了避开内存碎片,二是提高了内存申请和释放的效率不用每次都在系统内存里查找一番。 二、系统设计 正常用户端每分钟最多发一个恳求至效劳端
10、,效劳端需做一个特别客户端行为的过滤系统,设效劳器在某一刻收到客户端A的一个恳求,则1分钟内的客户端任何其它恳求都需要被过滤,现知每一客户端都有一个IPv6地址可作为其ID,客户端个数太多,以至于无法全部放到单台效劳器的”内存hash表中,现需简洁设计一个系统,使用支持高效的过滤,可使用多台机器,但要求使用的机器越少越好,请将关键的设计和思想用图表和代码表现出来。 三、求一个全排列函数: 如p(1,2,3)输出: 123、132、213、231、321、323 求一个组合函数 如p(1,2,3)输出: 1、2、3、1,2、2,3、1,3、1,2,3 这两问可以用伪代码。 it笔试题目(3) 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- it 笔试 题目
限制150内