《2022年腾讯面试题(后台开发岗位)(应聘 求职 面试准备资料).pdf》由会员分享,可在线阅读,更多相关《2022年腾讯面试题(后台开发岗位)(应聘 求职 面试准备资料).pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年腾讯面试题(后台开发岗位)第 1 题:一、不定项选择将一组无序的数据重新排列成有序序列,其方法有0A 拓扑排序B 快速排序C 堆排序D 基数排序答案:BCD解析:在图论中,由一个有向无环图的顶点组成的序列,当且仅当满意下列条件时,称为该图的一个拓扑排序(英语:Topological sorting)o每个顶点消失且只消失一次;若 A 在序列中排在B 的前面,则在图中不存在从B 到A 的路径。也可以定义为:拓扑排序是对有向无环图的顶点的一种排序,它使得假如存在一条从顶点A 到顶点B 的路径,那么在排序中B 消失在A的后面第 2 题:某服务恳求经负载均衡设备安排到集群A、B、C、D进行处
2、理响应的概率分别是10%、20%、30%和40%o已知测试集群所得的稳定性指标分别是90%、95%、99%和99.9%O现在该服务器恳求处理失败,且已排解稳定性以外的问题,那么最有可能在处理该服务恳求的集群是 oA、AB、BC、CD、D答案:AB解析:选中该集群,并且处理失败了的概率为:10%*10%、20%*5%、30%*1%、40%*0.1%o A 与 B 的概率最高。第3题:下列说法正确的有()A环境变量可在编译source code时指定B在编译程序时,所能指定的环境变量不包括class pathC javac 一次可同时编译数个Java源文件D javac.exe能指定编译结果要置于
3、哪个名目(directory)-2-答案:ACD第4题:下列说法错误的有()A数组是一种对象B数组属于一种原生类C int number=31,23,33,43,35,63D数组的大小可以任意转变答案:BCD解答:Java把数组当作一个java类来处理java是纯面对对象的语言,他的数组也是一个对象。第5题:下列说法错误的有()A能被java.exe胜利运行的java class文件必需有main()方法BJ2SDK 就是 Java APIC Appletviewer.exe可利用jar选项运行Ja r文件D能被Appletviewer胜利运行的java class文件必需有main。方法答案
4、:BCD解析如下:B选项中J2SDK是编程工具,不是API.C选项中 Appletviewer.exe就是用来解释执行java applet应用程序的,简洁理解就是没有main函数的继承applet类的java类。D选项中 能被Appletviewer胜利运行的java class文件没有main()方法第6题:卡方分布的方差为2倍的自由度为?A nB 1C2nD4n答案:C注解:分布的均值为自由度n,记 为E()=no-4-分布的方差为2倍的自由度(2n),记 为D()=2n。第7题:如何削减换页错误?A进程倾向于占用CPUB访问局部性(localityofreference)满意进程要求C
5、进程倾向于占用I/OD使用基于最短剩余时间(shortestremainingtime)的调度机制答案:B解析如下:换页错误又称缺页错误,当一个程序试图访问没有映射到物理内存的地方时,就会消失缺页错误,这时操作系统就要去虚拟内存中加载这块内存页。百度了一下,削减换页错误的方法,即降低缺页中断率:1、内存页框数。增加作业分得的内存块数。2、页面大小。页面划分越大,中断率越低。3、替换算法的优劣影响缺页中断次数4、程序局部性。程序局部性好可削减缺页中断(为什么?)。那 么B是对的,而对于D,最短剩余时间调度是CPU调度就绪进程-5-的方式,与页面置换算法无关,不要搞混淆了。第8题:Please c
6、hoose the right statement about constusage:A const int a;/const integerB int const a;/const integerC int const*a;/a pointer which point to const integerD const int*a;/a const pointer which point to integerE int const*a;/a const pointer which point to integer答案:ABC解析如下:对于A和B,int const和const in t可以颠倒位
7、置,意义不变CDE都表示指向const in t的指针,而int*const a才表示指向int的const指针第9题:下列定义语句中,错误的是A int px*;B char*acp10;-6-C char(*pac)10;D int(*p)();答案:A第10题:对类成员访问权限的掌握,是通过设置成员的访问掌握属性实现的,下列不是访问掌握属性的是()A公有类型B私有类型C爱护类型D友元类型答案:D解析如下:C+中有三种权限掌握类型,分 别 是 共 有 类 型public,私有类型private,爱护类型 protected.友元是声明一个类外的方法具有类方法同样的访问权限,目的是让类外的方
8、法可以访问类内部的属性,不是访问掌握属性。第11题:给出以下定义,下列哪些操作是合法的?-7-const char*pl=hell。;char*const p2=world;A pl+;B pl2=w;C p22=D p2+;答案:A解析如下:p l是指向字符常量的指针,p l本身不是常量,所以P1+合法,A正确。P2本身是指针常量,可以指向特别量的字符。但是hell。这样声明的字符串是存储在只读存储区的,不行修改,所以B,C,D都错误。第12题:以下集合对象中哪几个是线程平安的?()A ArrayListB VectorC HashtableD Stack-8-答案:BCD解析如下:在集合框
9、架中,有些类是线程平安的,这些都是jd k l.l中的消失的。在 jdkl.2之后,就消失许很多多非线程平安的类。下面是这些线程平安的同步的类:vector:就比arraylist多了个同步化机制(线程平安),由于效率较低,现在已经不太建议使用。在 web应用中,特殊是前台页面,往往效率(页面响应速度)是优先考虑的。statck:堆栈类,先进后出hashtable:就比hashmap多了个线程平安enumeration:枚举,相当于迭代器除了这些之外,其他的都是非线程平安的类和接口。第 13题:若下列所用变量均已经正确定义,一下表达式中不合法的是Ax3B+jC a=xy?x:yDx%=4-9-
10、答案:B解析如下:A,x右移三位B,+j是j 自增1,+j是不合法的,编译出错C,这是一个三目运算符,(expl)?(exp2)exp3)当expl为true时个表达式结果为exp2当expl为 false时整个表达式结果为exp3D,取余运算,等价于x=x%4第 14题:test.c文件中包括如下语句:#definelNT_PTRint*typedef int*int_ptr;INT_PTR a,b;int_ptr c,d;文件中定义的四个变量中,哪个变量类型不是指针类型?A aB bCcDdE 都是指针F 都不是指针 io 答案:B解析如下:#define INT_PTR int*这是宏定
11、义,编译预处理阶段要进行宏替换,INT_PTR a,b会变成int*a,b 所以b 不是指针类型typedef int*int_ptr;这是自定义类型,也就是把int_ptr定义为int型指针,编译阶段会把c,d都识别为指针第 15题:不属于冯诺依曼体系结构必要组成部分是:A CPUB CacheC RAMD ROM答案:B第 16题:二、问答题有 1000亿条记录,每条记录由url,ip,时间组成,设计一个系统能够快速查询以下内容1.给定url和时间段(精确到分钟)统计url的访问次数2.给定ip和时间段(精确到分钟)统计ip 的访问次数答:首先,1000亿条记录全部放到内存确定不够,那就是
12、分成小文件了,然后整合;公共的时间段,由于精确到分钟,我们把这每一分钟建成一个小文件,每个小文件确定会有很多重复的ip,url;现在统计每个小的文件中url的访问量和ip 的访问次数,方法就是建立索引;(建立索引的目的是为了削减查询次数,但是随着索引级数增多也会造成花更多的时间在建立索引上);建 立 u r l 的 索 引,假 如 是 以 分 别给和 question建立索引,那么来了一条u r l,先看一级索引是不是匹配,匹配再看二级索引,相同的话就是我们要的u rl目标;ip 的索引也是一样,ip 分 成 4 段建立索引;所以这里影响效率的就是在索引建立这块,索引建立好那就是查询的事了的,
13、就会变得特别快。假定给定了某个时间段,找 出 u rl的访问量,那么先找到给定的时间段,对应着刚开头分割的小的文件(每一个分钟)中搜寻,通过索引找到相同的url之后,开头统计,直到搜寻完全部的给定时间段内的全部的小的文件;求 ip 的访问次数也是一样,根据给定的时间段,找到对应的小的文-12-件,通过索引找到相同的ip后统计,直到搜寻完了给定时间段内的全部的小的文件。第17题:实现一个简化的搜寻提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中消失频率最高的前10条queryo由于是分布式系统,假设至少有26台机器,每个机器存储以26个字母开
14、头的query日志文件(如机器1存的是a字母开头的,机 器2存的是以b字母开头的)每个机器上维护着一张哈希表,对 于 每 条query,在哈希表表中存放 其 地 址(哈希地址为链式的),并对其进行排序,按频率由高到低进行排序。当用户进行搜寻时,可以很快定位到某台机器,并依据哈希表,返回消失频率最高的前10条queryo提示:1、可以预处理日志2、假 设query不超过10亿条,每 个query不超过50字节。3、考虑在大查询量的状况下如何实现分布式服务系统前台:-1 3-用JS监控input输入框的内容变化,用户输入或者删除字符(输入串的发生变化)就触发异步Javascript提交输入内容到后
15、台,引发后台查询。然后再讲查询结果消失频率最高的前10条 query呈现给用户提示。系统后台:首先有26台服务器分别存储26个字母开头的queryo所以首先要设计一个接收用户恳求的服务器,这台服务器可以依据用户恳求的首字母将查询恳求分发给对应2 6 台服务器中的一个(相当于查询恳求的路由功能)。然后就是这26台查询服务器如何设计的问题了。假设query不超过10亿条,每个query不超过50字节。也就是query文件不超过5 0 G,分在26台机器上也就是每台机器上的query文件不超过2Go每个机器上维护着一张哈希表,对于每条query,在哈希表表中存放其地址。收到每个query做 hash
16、运算可以找到query对应的地址。对应每个query存储两项信息,即query本身和被查询次数,也就是类似query:times这样的存储格式。下面做预处理:26台机器都对自身存储的query进行遍历,分别找出a 到 z 开头query消失频率最高的toplO,这样的查询一次遍历就能找到,时间简单度为0(N)。然后对找到的toplO在内存中构建一个最小堆。其他非toplO的query无需做排序处理。到这里预处理完-1 4-成。然后说查询过程,查询分为两类,1,以给出搜寻提示的异步Javascript提交的查询,这种查询直接返回最小堆中的10个query词条即可。2,用户最终提交的查询(即用户输
17、入完毕点击搜寻按钮提交的查询),这种查询的query是用户最终查询的词条,这样的查询应当引起后台存储的对应query频率的变化。当一个query到达的时候,先用hash运算找到他的位置和对应的频率,hash操作时间简单度是0(1),然后对应的次数+1,然后用这个+1的次数与最小堆中首个元素比较,假如大于最小堆首个元素,与最小堆中首个元素交换,然后最小堆做更新操作,保证最小堆的特性。否则不操作。这样最小堆中维护的10个query始终是这台机器上频率最高的,查询时返回这10个query词条即可。第18题:小米公司内部每个员工都会有一个专属的工作邮箱,邮箱的前缀是员工姓名的拼音全拼,例如张强的邮箱是
18、,但同时公司里有许多同名的人,为了避开大家相互之间发错邮件,工程师们想了个规章来解决这个问题,即在这些同命人中,入职最早的邮箱前缀为姓名的拼音全拼,其次个入职的邮箱前缀为姓名的拼音全拼后面加_a,第三个入职的为姓名的拼音全拼后面加_b,以次类推,请按这个规章,假如公司里同时有3位名叫张强的员工,则他们的邮-15-箱 分 别 是 ,zhangqiang_,zhangqiang_邮箱前缀是员工在公司里的重要标识之一,问题来了:现在小米要进行一次全员野外拉练活动,要求全部员工必需排成一队出去,并且,有的员工要求他必需排在某人的前面或后面,作为组织者的你,收到这样的需求之后,如何给出一个让每个人都满足
19、的排队方式呢?Java:class Requestitem(public String member;public boolean standFront;true 表示要排在这个人的前面,false表示要排在这个人的后面class Request(public String owner;那个人提出的要求ListRequestltem requestitems;他要排在哪些人的前面,哪些人的后面Liststring getZalidOrder(ListStringallMembers,ListRequest requests);-1 6-allMembers就是全部员工的邮箱前缀,requests是一些人的排队要求。小米公司现有几千名员工,每个人最多有10个排队要求(要排在一个人的前面或者后面算一个排队要求),也有人没有什么要求。现在你的任务是完成上面的getValidOrder函数,假如有合法的排队序列,那么返回其中任何一个。否则返回nulL假设有n个员工。选用数据结构,mapnno1、其中mapij=l.代表i在j的前面,=0代表前后位置,=-1带表在后面。若消失已经=;的状况下,在后面又要求=1,会形成环,则返回nulloo2、这样就形成了一个图,然后进行拓扑排序即可。先找出全部入度 为0的点,放在前面,然后去掉这些点和相应的边.如此得到最终结果。17-