如何当腾讯游戏测试员招聘

您好,分享的企鹅
每日测试:来做个游戏深入了解一下自己的人格
关注腾讯大申网微信(微信号:腾讯大申网或dashenw),回复关键词“树”,就可以知道***!
欢迎关注腾讯大申网微信(微信号:dashenw)
相亲交友、情感倾诉、抢福利,你想要的都在这!
1.回复关键字“福利”,随时了解近期即将送出的福利 !
2.你也可添加大申君私人微信号“dashenwzb”,成为真爱粉!
试想,你正在跟一群小伙伴玩捉迷藏,现在图中有九棵树,凭直觉你会躲在哪棵树后呢?每一棵树都代表一种人格的魅力!快来腾讯大申网微信查结果吧!关注腾讯大申网微信(微信号:腾讯大申网或dashenw),回复关键词“树”,就可以知道***!
欢迎关注腾讯大申网微信(微信号:dashenw)
相亲交友、情感倾诉、抢福利,你想要的都在这!
1.回复关键字“福利”,随时了解近期即将送出的福利 !
2.你也可添加大申君私人微信号“dashenwzb”,成为真爱粉!
正文已结束,您可以按alt+4进行评论
相关阅读:
相关搜索:
看过本文的人还看了
[责任编辑:wyxwsx1]
热门搜索:
寒风已生,一碗泡饭,才是上海人最深刻的味觉基因。
变速箱没有那么的不经用,挂P者N挡启动都可以。
上海,一座有着万种风情的城市!
秋色和音乐皆不可辜负哦。
Copyright & 1998 - 2016 Tencent. All Rights Reserved腾讯S级手游管理方法 手游质量测试步骤
腾讯S级手游管理方法,一起来看看腾讯手游质量测试步骤。腾讯每个月都会有一部新款游戏的出世,那这些游戏从开始到与玩家见面经历过那些质检呢?一起来看看。
通过本文你将会了解到,腾讯游戏上线前需要做一系列的测试,涵盖前后台性能、安全防护、网络适配、机型兼容、功能完整性等,这些工作往往都是提前三个月就开始介入,多线并行,最大程度的将游戏质量风险降到最低。相传,在腾讯游戏测试工程师中间流传着这么一句话,&不把主程逼疯的测试不是一个好产品&,玩笑归玩笑,但也反应出腾讯游戏测试对于质量要求的苛刻程度。今天我们就来爆爆他们把主程逼疯的那些事儿。
一、服务器性能测试
之所以将这个测试放在第一位,是因为腾讯游戏的用户数量一般都是远远超过其它公司的,有微信和手机QQ两大平台的导量,游戏刚开服用户是像潮水一样涌入,这个时候非常考验游戏服务器的数据处理、容错及稳定运行的能力。而这几个关键问题的保障,便是通过这项专门的测试工作来完成的。
游戏玩家虽然看不到服务器的处理能力,吞吐量等,但他们能真实地感受到各种服务器性能问题,例如:&游戏怎么进不去了&, &通关结算为啥一直转菊花&, &竞技场为啥一直匹配不到对手&等等。这些问题会大大降低玩家游戏的热情,加剧用户流失率。
除此之外,如果线上大部分机器都在低负荷的运行,玩家感受没问题了,但是机器资源却严重被浪费。服务器性能测试就是为了保障玩家流畅游戏的同时,又能够最大化地利用服务器资源,是游戏上线前必不可少一个环节。
那么,如何做服务器性能测试呢?
简单来说,服务器性能测试就是利用创建虚拟机器人玩家,模拟多用户的并发场景,对服务器产生压力,暴露服务器性能瓶颈和风险。
具体测试流程可划分为 7 个方面
1. 需求分析:明确需要测试的性能场景及性能基线
2. 分析服务架构,找出架构薄弱点
图1.1 服务器架构图
3. 构建测试模型:分析服务器架构,协议交互,及收集的测试数据,构建测试模型
图1.2 构建游戏业务模型
4. 分析数据及协议交互,使用特定算法构建压力模型,利用tcpdump等工具捕获数据包,并进行分析
图1.3 服务器协议交互数据
5. 编码实现:分析协议包,在腾讯自研性能框架下,灵活实现业务逻辑
图1.4 利用腾讯自研性能工具,只需实现数据包的组装及解析及游戏业务逻辑
6. 执行压测,观察数据:设置好性能基线后,执行对应游戏场景进行测试,观察机器人性能数据、服务器CPU、内存、磁盘IO、网卡负载等核心指数。
图1.5 服务器性能测试数据
7. 回归调优: 分析性能瓶颈, 待开发修复后,重新回归测试,直到满足性能基线。
举两个案例来说明腾讯游戏的测试方法。
案例一: 服务器容量太低,无法承载设计目标在线人数
某游戏容量测试时,5000机器人在线游戏,服务器性能不足,优化前业务逻辑服务器CPU最大达到100%,事务响应缓慢,客户端操作延时高
图1.6 服务器CPU性能测试图(优化前)
通过数据分析,性能瓶颈定位,系协议解析的反序列函数效率极低,因此对此函数的算法进行了优化,优化后服务器性能提升200%+。
图1.7 服务器CPU性能测试图(优化后)
案例二:游戏功能事务成功率符合要求对应优化
某游戏在性能测试过程中发现, 10000人同时游戏,部分机器出现战斗结算失败的问题。
图1.8 游戏战斗结算失败
玩家在通过登入校验后,服务器会下发一个Session,后续所有协议都会带上Session,高并发下,服务器处理Cache置换逻辑异常,导致用户Session记录失败,于是出现部分机器结算时,由于Session校验失败导致结算失败。
二、游戏客户端(APK & IPA)性能测试
客户端性能在游戏中是影响游戏表现的决定性因素,是玩家可以直接感知到的。一款好的游戏是否能在大众的设备上流畅运行,是否能给不同的玩家相同的畅快体验,都是决定游戏成败的关键。
一般情况下,一款游戏都会在Android和iOS平台上同时发布,有些游戏在iOS系统上运行时流畅度非常高,用户体验和操作都很好,但换到Android设备时候表现却是非常不好,卡顿,机器发热,耗电快等,尤其是在不同用户的手机硬件不一样的情况下,需要尽可能多的满足在低端机器上的游戏体验。因此,在打造一个精品游戏的过程中,游戏的客户端性能测试不容小觑。
那么再来说说如何做客户端性能测试。
游戏启动后会占用手机系统的CPU和内存,在玩的过程中会消耗一定的流量和耗电量,客户端性能测试就是在游戏发布前,对游戏的这些性能数据进行采集,并分析以上各个检测项是否存在性能瓶颈。
要定位客户端的性能瓶颈,需在游戏的过程中对游戏的CPU、内存、流量、耗电量和FPS等信息进行采集。Android平台详细采集指标主要由以下几部分组成:
FPS帧率:应用程序每秒钟显示的帧数
CPU占用率:应用程序占用的CPU资源情况
内存:应用程序存放到系统内存中占用情况,目前主要采集PSS
显存:应用程序存放到显卡存储区域的资源数据占用情况,目前主要采集VBO
GPU占用率:应用程序占用GPU资源情况
其中,手游特有指标还包含:
流量:单位时间内通过网络端口传输的数据总量
电量:单位时间内应用程序消耗的电荷数量
目前针对游戏的客户端进行性能测试,很多移动测试云平台为开发者提供了便利条件。拿腾讯自己的WeTest云平台来说,用户只需要上传一个apk包,在云端的手机上进行正常游戏操作就可以采集到游戏的CPU、内存、流量、耗电量和FPS这些信息,极大地简化了手游的客户端性能数据的采集,在开发精品手游的过程中助开发者一臂之力。
测试方法:
在WeTest云平台上,用户可以选择性能测试,提交一个APK后,正常进行游戏并标记各个游戏场景,在远程性能测试结束后,会生成类似如下的测试报告,分分钟帮助开发定位性能瓶颈。
图2.1 客户端性能测试报告图
实际案例:
用WeTest云端性能测试的高配手机对某动作类手游核心玩法的客户端性能测试发现了如下问题:
内存使用情况:
图2.2 客户端性能测试内存图
游戏所占内存峰值达到500M左右,而根据当时腾讯游戏用户机型分布情况而确定的客户端性能标准,高配机型是不能超过450M。多这50M意味着将会有大量的玩家不能有很好的游戏体验,因此这个指标必须经过优化才可以上线。为此项目团队花费一周多时间裁减非核心资源精度,保证这个数值在安全范围内,以牺牲可控范围内的画质来达到游戏流畅的目的,以便获得更好的游戏操作体验。
另外再看一款项目,通过获取游戏FPS情况,如下图:
图2.3 客户端性能测试FPS图
大多数情况下的这款游戏的FPS都集中在27fps左右,个别情况甚至只有10以内的帧数,而按实际情况,游戏最低需要达到平均30fps左右的数值,且上下浮动不超过5fps,即需要保证在25-35fps之间才能获得比较好的流畅度。通过定位关键节点数据和场景的对应关系,发现在某个特殊时间会加载一个无效的空白动画资源并且反复重绘,导致游戏fps上不去,删除掉这个资源及调用的代码,fps稳稳上到了32帧。
三、移动设备兼容适配测试
恐怕很难说清楚市场上到底有多少款手机,Android系统自由而野蛮的生长带来了无穷的生命力,同时也给开发者带来了无尽的痛苦,几乎每一个开发者都会被Android手机的兼容适配深深的烦扰着,腾讯游戏自然也不会例外。
那么腾讯游戏又是如何解决这个问题的呢?
总结起来一句话,在尽可能多的机型上进行游戏的***、运行和数据监控,听起来并没有什么大的不同,但真正不同的,是怎么做这个事情。
腾讯游戏一方面通过WeTest云测平台进行发布前的适配兼容测试,另一方面发布后还要时刻关注用户机器的Crash上报情况。在WeTest平台,我们会选择游戏用户的Top机型进行测试,只需要上传APK,然后等着收报告即可,在整个平台数百部手机上的***包分发,测试都是自动完成的,绝大多数的场景并不需要人参与其中,非常高效便捷。
在WeTest平台提供两种兼容适配服务,Android标准兼容测试,以及Android深度兼容测试,下面说说这两者的区别:
1. Android标准兼容测试
标准兼容测试提供游戏的***,拉起,模拟登录(集成了腾讯的MSDK),随机Monkey点击,卸载,并自动定时截图,自动检测黑屏、自动记录崩溃、ANR,并且在出现这种情况后自动上报当时的日志记录,这个测试不光游戏可以使用,常规的应用类APP也可以使用。
2. Android深度兼容测试
深度兼容测试是针对游戏做的一个更深层次的兼容适配测试,可以从引擎层面获取到游戏元素,真正深入到游戏内部的场景中进行测试,除了记录标准测试测试里面的各项数据外,还能够支持脚本定制逻辑、引擎层面数值统计、函数热点记录等各种深层次的信息,并且还有专门的人力来整理数据,提供最专业最有用的报告给开发团队。
两者中深度兼容测试是笔者极力推崇的兼容测试模式,我们从中可以得到非常多的信息,随便跑一次深度兼容测试,选了37部机器,结果如下图所示:
图3.1 深度兼容测试的总体结果图
在华为P9上出现了什么问题,是什么错误信息,性能指标如何,深度兼容测试一共测试了一个小时多,深入到了游戏里面,有上百张截图,可以一键通过图片去重来过滤掉干扰信息,快速的定位到有问题的场景,非常方便。
我们可以看到在所选择的37台机器中,都分别出现了什么问题,问题分类是什么,原因及堆栈信息都会有上报,基本上就可以直接拿来查问题修复。而点击进入具体的某一部机器,再查看,会有更多的详细数据,如下图:
除了专业而丰富的信息,腾讯游戏测试对于兼容适配测试的机型选择同样是慎之又慎,用数据说话。在腾讯游戏测试质量部门有专门的团队每天针对腾讯游戏用户的机型做数据挖掘,每天在近2亿条记录中提取出来用户使用的手机的型号并做各种汇总,为腾讯游戏应该运行在什么样的设备上提供数据依据,也最终用于指导兼容适配的设备选择,下图为最新腾讯游戏设备排名前20名的数据:
图3.3 游戏用户热门机型排名(来自腾讯大数据系统)
以及更详细的显卡芯片的分布统计:
图3.4 显卡芯片的市场排名图
通过以上多张数据表我们能够明确感觉到腾讯游戏测试在手机兼容适配测试这一问题上的严谨和专业度,不管是设备选择,还是性能数据获取,以及针对游戏引擎而做的深度兼容技术,都表现出了极强的可靠性。而生于游戏,精于游戏的WeTest测试平台将这一强力的质量保证解决方案共享给业界,是每个游戏开发者的福音。
四、腾讯游戏的安全测试
在鼓励玩家交易的PC时代,重大的安全漏洞可以毁掉一个游戏。到了手游时代,玩家的数量呈几何数增长,交易系统也在逐步开放,但受限于网络状况和流量考虑,与服务器的交互较少,导致安全问题尤为突出,安全漏洞一旦被某些&玩家&利用很容易会导致游戏内数值系统的平衡性很快消失,造成重大影响。因此游戏上线前必须经过严格的客户端安全测试,确保放到外网去以后,出现外挂需要尽量高的门槛。
腾讯游戏在上线前,先进行一整套内部的漏洞搜索和外挂攻击模拟,在一定时间内尽可能多地挖掘出游戏中的安全漏洞,对漏洞的原因进行深度分析,然后提供修改方法建议。配合腾讯安全中心提供的各类组件和接口,为游戏穿上一层牢固的护甲,使其难以被攻破。如果线上还是出现了外挂,也可以做到准确定位并分析原因,第一时间提出解决方案。
常用的***手段有内存修改,配置表修改,hook游戏动态修改等。针对这些***方法,我们做手游安全测试常用的工具及其主要作用如下:
图4.1 手游安全测试常用工具
使用这些工具,我们设计了一整套的测试方案,有以下几个部分。
1. 游戏***包检查
检查***包内重要配置信息和代码是否加密,代码是否混淆,敏感信息有没有泄露的可能,修改后的***包能否***并正常游戏,主要使用开源工具apktool,dex2jar,baksmali等,这些工作也是Android平台上用于逆向分析的初步工具。
2. 游戏运行时内存修改
这个测试方案主要用各种主流修改器,如烧饼修改器,八门神器等在内存中搜索敏感数值,尝试修改以达到获益目的,如下某个游戏中的内存修改测试:
图4.2 游戏内存修改测试
3. 代码逆向分析
针对游戏引擎的不同,使用Ollydbg、IDA、ILSpy等对客户端进行逆向破解,获取其逻辑代码进行分析、修改。这项工作要求测试工程师有相当好的逆向技术,用外挂作者的思维方式考虑问题,以彼之道,还施彼身,封堵可能被利用的程序漏洞。
图4.3 游戏代码逆向分析
4. hook游戏进程
hook的目的是为了进行动态修改以达到获益目的,可以用 IDA先调试分析、然后使用Vulminner、SR安全雷达等自研安全测试工具或者自己编写的注入代码进行hook,这些优秀的内部工具也将逐步在WeTest平台上发布对外。下图是自研的一款hook测试工具。
图4.4 腾讯自研的手游hook测试工具
5. 网络协议包构造攻击
手游的C/S交互都是通过网络数据包进行的,腾讯游戏安全测试工程师会模拟非法游戏逻辑包、异常逻辑数据包及重发核心数据逻辑包等方式进行网络协议的攻击,以检查服务器对于非法数据的处理能力,以及是否存在逻辑漏洞等。
图4.5 网络协议包构造工具
下面举个实际项目发现的安全缺陷的例子,来说明基本的测试方法。
图4.6 某塔防游戏安全漏洞示意图
上图是一个塔防游戏中发现的安全漏洞,敌方战斗单元沿着路线前进,游戏的目标是消灭所有敌方战斗单元。由于流量和网络考虑,游戏过程中客户端和服务器不会有交互,只有在一局游戏结束后,客户端把战斗结果以及某些相关数据上报给服务器,服务器进行结算。
而这些上报数据中没有AI行进路线,所以针对这一漏洞,对AI的前进函数进行hook并修改,使其止步不前,这就使得敌方只出现在出口且永远不会移动,极易消灭,大大降低了游戏的难度。所以,这个缺陷的修复方法就是在战斗结束时,增加敌方行进路线进行分析,发现速度或者地点异常则判定结算失败。
除此之外,还有一些增强安全防护以及防外挂的手段,比如:进行代码混淆,加壳保护,***包进行签名校验,核心游戏逻辑的用户行为与核心数据在服务器校验,log文件中避免输出敏感信息等等。
五、腾讯游戏的网络适应性测试
手机移动时代,网络制式繁多,2g/3g/4g/wifi , 各种制式之间网速差异巨大,连接稳定性也不尽相同。在这样复杂的网络环境下,断线、卡死、闪退、数据不同步等都成为手游最常见的问题。为了让游戏拥有强大的网络环境适应能力,网络适应性测试成为了精品手游测试过程中不可或缺的一个环节,然而网络适应性测试却远没有我们想象的简单。
弱信号的网络适应性测试中最难的部分就是网络环境的模拟,我们不可能让我们的测试人员常年分布在地铁、商场、高铁等现实网络环境中,我们也不可能准备一堆***卡,2g、3g、4g、wifi来回切换,我们只能在办公室尽量模拟最接近现实的弱信号网络环境。
在传统的网络测试中,大多采用模拟软件对传输的数据包进行处理,从而模拟不同的网络条件。对于移动互联网而言,将移动通信网络看作是黑盒模块,网络信号不强的影响仍然可以归结为网络中的丢包率、误码率、延迟等特性,只是在网络带宽,网络间切换等特性上会有所差异。
我们通过分析不同网络制式的特性、各运营商提供的数据,以及现场真实采集的数据,制定了各种弱网络的模型来模拟2g/3g/4g在各种现实环境下的特性,模型的参数包括:延迟、断线频率、丢包率、上下行带宽等。
而且我们将这套高仿真模拟的网络环境集成到了WeTest平台,从此,在不同的网络环境下切换,不再需要实地测试,也不再需要繁琐的配置,就只需要轻松地点一下鼠标。
如下图所示,WeTest网络适应性测试平台提供了5种常用的典型的网络环境:1. 正常wifi 、2. 3G高延迟网络、3. 3G请求回应超时、4. 2G E网高速移动、5. 2G E网低速移动。
图5.1 典型弱网络环境
如果以上预设的网络环境还无法满足要求,没有关系,自定义网络场景可以自行设置网络参数,想要多弱就有多弱。
图5.2 自定义网络场景
在这套网络测试环境下,就能快速发现定位网络适应性不佳的而导致的缺陷,以下是一些实际项目网络测试发现的缺陷:
图5.3 游戏中的弱网络卡死
上图所示bug为一款游戏在战斗过程中进入弱网环境导致的界面卡死,缺陷原因是客户端在战斗过程中需要跟服务器同步关卡数据,但是在网络连接层面没有做断线重连机制,客户端发出请求后会一直等待服务器响应,如果服务器没有响应就会一直卡死在数据同步界面。
图5.4 游戏中的弱网络无法结算
上图所示bug为一款游戏在结算过程中进入弱网状态,无法结算,虽然游戏做了断线重连机制,在连接超时后提示玩家需要重新连接,但是重新连接后的逻辑处理不正确,没有正确返回结算界面,而是出现了登录界面,造成的界面错乱。
以上内容是腾讯游戏除传统功能测试之外的所进行的各项专业而深入的灰白盒层面测试工作,部分环节的难度已经远超过了开发本身,真正的让产品在技术层面上保证最佳品质,为腾讯游戏高品质保驾护航。
随着这些专业的技术方案逐步通过WeTest平台对外开放,我们有极大的理由相信这会对行业内游戏品质的提升产生非常大的推动作用。
热门安卓游戏排行
类别:休闲游戏
类别:休闲游戏
类别:角色扮演
47644人推荐55960人推荐65424人推荐75212人推荐84965人推荐94930人推荐104818人推荐
最新安卓游戏排行
类别:角色扮演
类别:角色扮演
类别:养成游戏
40人推荐50人推荐60人推荐70人推荐80人推荐90人推荐100人推荐移动开发一站式解决方案
移动设备兼容问题
本地手机储备不足
客户端、服务器性能问题
用户反馈难以全面监测
安全、权限风险
线上质量问题
手游解决方案
多种类型的S级手游解决方案
应用解决方案
为企业提供一站式解决方案
我们的服务优势
服务于海量产品
提供所有腾讯精品游戏质量服务,如《英雄联盟》、《王者荣耀》等
腾讯质量标准
十三年千款游戏磨砺,铸就精品质量标准
5大维度,41项指标,360°保障产品质量
腾讯金牌质量团队
腾讯高级专家坐诊
为您提供腾讯顶级游戏同等服务
独创技术引领革新
基于亿级用户样本的大数据运营分析引擎
次世代自动化游戏测试技术
腾讯立体化安全防护体系,保卫您的信息安全
合作汇聚力量,质量带来快乐
现在注册,即可领取免费礼包
注册并成为认证用户可获得价值1000元的免费服务,如标准兼容测试50台1次/天,云真机免费机时120分钟等
Copyright (C) 1998 - 2016 Tencent. All Rights Reserved 腾讯公司 版权所有2015腾讯软件测试笔试题1.有一个文件test.txt里面有四列(name class address age),问:用_____shell命令打印出class列的内容。-----awk &{print $2}& test.txt2.英特网的远程登录的工作模式是_____工作模式。-----客户机/服务器3.防止系统区被破坏的方法有两种:存储保护键和______。-----------定时备份4.多播IP用的是哪类地址(D)A.A类地址 B.B类地址 C.C类地址 D.D类地址5.关系代数的优化策略是_______。------尽早执行选择运算6.在***中,无损连接,函数依赖属于_______。7.在完成了数据库的模式的定义之后,数据字典里面应该包括______。8.可重定位内存分配的目的是_______。------解决碎片和紧缩问题9.unix的目录结构是______。10.连接方式存储的队列,在删除一个节点时(D) 选项可能记不清了,大概是这样A.只改动头指针 B.只改动尾指针 C.头指针和尾指针都改动 D.头指针和尾指针可能改动11.不带头指针的单链表的队列,在删除一个节点时(D) 10和11这两个题目有什么区别,不解?A.只改动头指针 B.只改动尾指针 C.头指针和尾指针都改动 D.头指针和尾指针可能改动12.完整性约束包括:主键约束,外键约束,和全局约束。-----所以应该是:用户自定义约束13.IEEE802.3物理地址是(C)位A.32bit B.64bit C. 48bit D.16bit14.哪一种数据的查询需要优化A.层次数据库 B.网状数据库 C.关系数据库 D.无关系数据库15.负责压力测试不包括A.访问量 B.点击次数 C.业务处理时间 D.业务请求吞吐量16. 在五层的网络模型中,传输层属于第___4___层。腾讯软件测试笔试题腾讯软件测试笔试题1、计算表达式x6+4x4+2x3+x+1最少需要做次乘法A、3 B、4 C、5 D、62、给定3个int类型的正整数x,y,z,对如下4组表达式判断正确的选项int a1=x+y-z; int b1=x*y/z;int a2=x-z+y; int b2=x/z*y;int c1=x《》z; int d1=x&y|z;int c2=x》》z《A、a1一定等于a2B、b1一定定于b2C、c1一定等于c2D、d1一定等于d23、程序的完整编译过程分为是:预处理,编译,汇编等,如下关于编译阶段的编译优化的说法中不正确的是A、死代码删除指的是编译过程直接抛弃掉被注释的代码;B、函数内联可以避免函数调用中压栈和退栈的开销C、For循环的循环控制变量通常很适合调度到寄存器访问D、强度削弱是指执行时间较短的指令等价的替代执行时间较长的指令4、如下关于进程的描述不正确的是A、进程在退出时会自动关闭自己打开的所有文件B、进程在退出时会自动关闭自己打开的网络链接C、进程在退出时会自动销毁自己创建的所有线程D、进程在退出时会自动销毁自己打开的共享内存5、在如下8*6的矩阵中,请计算从A移动到B一共有多少种走法?要求每次只能向上挥着向右移动一格,并且不能经过P;A、492B、494C、496D、4986、SQL语言中删除一个表的指令是A、DROP TABLEB、DELETE TABLEC、DESTROY TABLED、REMOVE TABLE7、某产品团队由美术组、产品组、client程序组和server程序组4个小组构成,每次构建一套完整的版本时,需要各个组发布如下资源。美术组想客户端提供图像资源(需要10分钟),产品组向client组合server提供文字内容资源(同时进行,10分钟),server和client源代码放置在不同工作站上,其完整编译时间均为10分钟切编译过程不依赖于任何资源,client程序(不包含任何资源)在编译完毕后还需要完成对程序的统一加密过程(10分钟)。可以请问,从要完成一次版本构建(client与server的版本代码与资源齐备),至少需要多少时间A、60分钟B、40分钟C、30分钟D、20分钟8、如下关于编译链接的说法错误的是A、编译优化会使得编译速度变慢B、预编译头文件可以优化程序的性能C、静态链接会使得可执行文件偏大D、动态链接库会使进程启动速度偏慢9、如下关于链接的说法错误的是A、一个静态库中不能包含两个同名全局函数的定义B、一个动态库中不能包含两个同名全局函数的定义C、如果两个静态库都包含一个同名全局函数,他们不能同时被链接D、如果两个动态库都包含一个同名全局函数,他们不能同时被链接10、排序算法的稳定是指,关键码相同的记录排序前后相对位置不发生改变,下面哪种排序算法是不稳定的A、插入排序B、冒泡排序C、快速排序D、归并排序11、下列说法中错误的是:A、插入排序某些情况下复杂度为O(n)B、排序二叉树元素查找的复杂度可能为O(n)C、对于有序列表的排序最快的是快速排序D、在有序列表中通过二分查找的复杂度一定是O(n log2n)12、在程序设计中,要对两个16K&16K的多精度浮点数二维数组进行矩阵求和时,行优先读取和列优先读取的区别是A、没区别B、行优先快C、列优先快D、2种读取方式速度为随机值,无法判断A、1024B、1018C、55D、5014、TCP的关闭过程,说法正确的是A、TIME_WAIT状态称为MSL(Maximum Segment Lifetime)等待状态B、对一个established状态的TCP连接,在调用shutdown函数之前调用close接口,可以让主动调用的一方进入半关闭状态C、主动发送FIN消息的连接端,收到对方回应ack之前不能发只能收,在收到对方回复ack之后不能发也不能收,进入CLOSING状态D、在已经成功建立连接的TCP连接上,如果一端收到RST消息可以让TCP的连洁端绕过半关闭状态并允许丢失数据。15、操作系统的一些特别端口要为特定的服务做预留,必须要root权限才能打开的端口描述正确的是A、端口号在之间的端口B、所有小于1024的每个端口C、RFC标准文档中已经声明特定服务的相关端口,例如http服务的80端口,8080端口等D、所有端口都可以不受权限限制打开16、找工作的季节马上就到了,很多同学去图书馆借阅《面试宝典》这本书,现在图书馆外有6名同学排队,其中3名同学要将手中的《面试宝典》还至图书馆,有3名同学希望从图书馆中可以借到《面试宝典》,若当前图书馆内已无库存《面试宝典》,要保证借书的3名同学可以借到书,请问这6位同学有多少种排队方式A)60B)120C)180D)360填空题1、除了10进制、2进制之外,16进制表达式在计算机领域中也经常使用(例如各种字符集的定义描述),下式:(20XX)10+(AF1)16的结果是( )(请用10进制表示)。2、ack(3 , 3)的执行结果是多少?int ack(int m,int n)if(m == 0)return n + 1;else if(n == 0)return ack(m-1,1);elsereturn ack(m - 1 , ack(m , n-1));3、某互联网产品(例如,一款网络游戏)同时在线曲线(Average Concurrency Users,ACU)24小时数据如下图所示。现已知全天平均在线人数为5000人,玩家每次登陆后平均在线时长为2小时。请你估计一下,平均下来每分钟约有( )个玩家登录。4、如下SQL语句是需要列出一个论坛版面第一页(每页显示20个)的帖子(post)标题(title),并按照发布(create_time)降序排列:SELECT title FROM post( )create_time DESC( )0,205、为了某项目需要,我们准备构造了一种面向对象的脚本语言,例如,对所有的整数,我们都通过Integer类型的对象来描述。在计算&1+2&时,这里的&1&,&2&和结果&3&分别为一个Integer对象。为了降低设计复杂度,我们决定让Integer对象都是只读对象,也即在计算a=a+b后,对象a引用的是一个新的对象,而非改a所指对象的值。考虑到性能问题,我们又引入两种优化方案:(1)对于数值相等的Integer对象,我们不会重复创建。例如,计算&1+1&,这里两个&1&的引用的是同一个对象&&这种设计模式叫做;(2)脚本语言解析器启动时,默认创建数值范围[1,32]的32个Integer对象。现在,假设我们要计算表达式&1+2+3+&+40&,在计算过程需要创建的Integer对象个数是。6、甲、乙两个人在玩猜数字游戏,甲随机写了一个数字,在[1,100]区间之内,将这个数字写在了一张纸上,然后乙来猜。如果乙猜的数字偏小的话,甲会提示:&数字偏小&一旦乙猜的数字偏大的话,甲以后就再也不会提示了,只会回答&猜对 或 猜错&问: 乙至少猜 多少次 猜可以准确猜出这个数字,在这种策略下, 乙猜的第一个数字是 。7、仔细阅读以下函数Int fuc(int m,int n)if(m%n)==0elsereturn fuc(n,m%n)请问func(20XX,2102)的结果是( )。加分题:1、给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]。在构造过程:不允许使用除法;要求O(1)空间复杂度和O(n)时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);请用程序实现并简单描述。2、20世纪60年代,美国心理学家米尔格兰姆设计了一个连锁信件实验。米尔格兰姆把信随即发送给住在美国各城市的一部分居民,信中写有一个波士顿股票经纪人的名字,并要求每名收信人把这封信寄给自己认为是比较接近这名股票经纪人的朋友。这位朋友收到信后再把信寄给他认为更接近这名股票经纪人的朋友。最终,大部分信件都寄到了这名股票经纪人手中,每封信平均经受6.2词到达。于是,米尔格兰姆提出六度分割理论,认为世界上任意两个人之间建立联系最多只需要6个人。假设QQ号大概有10亿个注册用户,存储在一千台机器上的关系数据库中,每台机器存储一百万个用户及其的好友信息,假设用户的平均好友个数大约为25人左右。第一问:请你设计一个方案,尽可能快的计算存储任意两个QQ号之间是否六度(好友是1度)可达,并得出这两位用户六度可达的话,最短是几度可达。第二问:我们希望得到平均每个用户的n度好友个数,以增加对用户更多的了解,现在如果每台机器一秒钟可以返回一千条查询结果,那么在10天的时间内,利用给出的硬件条件,可以统计出用户的最多几度好友个数?如果希望得到更高的平均n度好友个数,可以怎样改进方案?3、段页式虚拟存储管理方案的#from 腾讯软件测试笔试题来自 end#特点。参考***选择题:A。原式=x^2 * (x^4 + 4 * x^2 + 2*x) + x + 1,x^2用一次乘法,x^4看成是(x^2)^2,这样用掉第二次乘法,外面的x^2 * 是第三次乘法,所有常系数乘法都展开成连加。文章出自,转载请保留此链接!A。一开始觉得A肯定不对,因为会溢出,但不知道其实正如微机原理课上原的,溢出会有标识位,连加减的时候会考虑到这个标识位的作用,这样A就对了。A。死代码是指永远不会执行到的代码,不是注释,比如if(0){&},大括号里的就是死代码。D。共享内存销毁了,会对其他正在使用这段内存的进程造成破坏。A。A走到B共需要12步,其中7步必须向右,5步必须向上,但次序可以不同,因此是C(7,12),要求P不能走,那么走到P的可能次数是C(3,6),从P走到B的可能次数是C(4,6),因此结果是C(7,12) & C(3,6)*C(4,6)=492。D。除了加密以外,剩下的事情在第一个10分钟内可以并发完成。C。快排选主元会打乱原次序。C。A当数据完全有序时就是O(n),B当数退化成线性表时(只有一叉时)出现,C快排只对无序、随机序列有优势。D是对的。D。长度1的子序列有10-2-1-1=6个,长度2子序列有9-1=8个,长度3有8个,长度4有7个&长度10有1个,加起来就是50。C。卡特兰数,C(n,2n)/(n+1),n是入栈元素的个数,这里n=3,C(3,6)/4=5,同学彼此是不同的,因此要全排列一下,结果为5*3!*3!=180。填空题:4813。61。这个有规律的,只要耐心一点就行了,ack(1,x)=2+x,ack(2,x)=3+x*2,ack(3,0)=5,ack(3,1)=ack(3,0)*2+3=13,ack(3,2)=ack(3,1)*2+3=29,ack(3,3)=ack(3,2)*3+2=61。不会。ORDER BY; LIMIT享元模式,40。1到7以及他们的和是不用创建的,从8开始,28(是1到7的和)+8=36,36需要创建,36+9=45,45需要创建&依次类推,在加数是32之前(含32)需要创建的对象是32-8+1=25,某数+32=某数之后33至40所表示的加数也要创建,这样有8个加数 + 8个和,共有16个数需要创建,注意,加数中包含36,这个我们已经创建了,所以有25+8+8-1=40个数的对象需要创建。14次,第一次猜测数字为14。思想是:每次猜大后,尝试猜测的总次数是相等的。第一次猜测时,在1到100之间选择某个数N1后,有三种情况,一是直接选中了,这个概率比较小,对研究没有意义,二是选择偏大了,这时不再提示了,只能在1至N1-1之间一个一个地选了,三是选择偏小了,这时还有提示,可以继续在[N1+1,100]中选择另外的数N2。可以知道,若第一次就猜错了,那么尝试总次数是N1-1+1=N1次(因为是在[1,N1-1]之间逐一取值,且N1本身用掉一次),若第一次猜得偏小,但第二次猜大了,尝试总次数是[N1+1,N2-1]的元素个数加2(加2是N2和N1本身猜用掉一次),即为N2-N1+1次,根据思想&每次猜错后,尝试猜测的总次数相等&,有N1=N2-N1+1,可知N2=2N1-1,增量为N1-1。类似地,前两次猜得偏小,但第三次猜大,尝试总次数为[N2+1,N3-1]的元素个数加3,即N3-N2+2,那么有N3-N2+2=N1,N3=N2+N1-2,增量为N1-2&&依此类推,增量是随着猜测次数的增加而逐1地减少。设最后一次猜测为k,则Nk=N1+(N1-1)+(N1-2)+&1,Nk是等于或大于100的第一个数,根据等差数列求和公式可以算出N1=14,N2=27,N3=39&(14,27,39,50,60,69,77,84,90,95,99)。2。递归。腾讯软件开发笔试题2015试卷类型:软件开发A1考试时长:120分钟一 不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA2 下列哪两个数据结构,同时具有较高的查找和删除性能?(CD)A.有序数组 B.有序链表 C.***L树 D.Hash表3 下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)A.快速排序 B.堆排序 C.归并排序 D.冒泡排序4 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A)A.8 3 2 5 1 6 4 7B.3 2 8 5 1 4 6 7C.3 8 2 5 1 6 7 4D.8 2 3 5 1 4 7 65 当n=5时,下列函数的返回值是:(A)[cpp] view plaincopyint foo(int n)if(n《2)return foo(n-1)+foo(n-2);A.5 B.7 C.8 D.106 S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C)A.37.5% B.32.5% C.28.6% D.26.1%7 Unix系统中,哪些可以用于进程间的通信?(BCD)A.Socket B.共享内存 C.消息队列 D.信号量8 静态变量通常存储在进程哪个区?(C)A.栈区 B.堆区 C.全局区 D.代码区9 查询性能(B)A. 在Name字段上添加主键B. 在Name字段上添加索引C. 在Age字段上添加主键D. 在Age字段上添加索引1IP地址131.153.12.71是一个(B)类IP地址。A.A B.B C.C D.D11 下推自动识别机的语言是:(C)A. 0型语言 B.1型语言 C.2型语言 D.3型语言12 下列程序的输出是:(D)[cpp] view plaincopy#define add(a+b) a+bint mainprintf(&%d\n&,5*add(3+4));return 0;A.23 B.35 C.16 D.1913 浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)A 找不到该页面B 禁止访问C 内部服务器访问D 服务器繁忙14 如果某系统15*4=112成立,则系统采用的是(A)进制。A.6 B.7 C.8 D.915 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:(A)A a(000) b(001) h(01) i(10) o(11)B a(0000) b(0001) h(001) o(01) i(1)C a(000) b(001) h(01) i(10) o(00)D a(0000) b(0001) h(001) o(000) i(1)16 TCP和IP分别对应了OSI中的哪几层?(CD)A Application layerB Presentation layerC Transport layerD Network layer17 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?(C)A.EDCBA B.DECBA C.DCEAB D.ABCDE18 同一进程下的线程可以共享以下?(BD)A. stack B.data section C.register set D.file fd19 对于派生类的构造函数,在定义对象时构造函数的执行顺序为?(D)1:成员对象的构造函数2:基类的构造函数3:派生类本身的构造函数A.123 B.231 C.321 D.2132如何减少换页错误?(BC)A 进程倾向于占用CPUB 访问局部性(locality of reference)满足进程要求C 进程倾向于占用I/OD 使用基于最短剩余时间(shortest remaining time)的调度机制21 递归函数最终会结束,那么这个函数一定?(B)A 使用了局部变量B 有一个分支不调用自身C 使用了全局变量或者使用了一个或多个参数D 没有循环调用22 编译过程中,语法分析器的任务是(B)A分析单词是怎样构成的B 分析单词串是如何构成语言和说明的C 分析语句和说明是如何构成程序的D 分析程序的结构23 同步机制应该遵循哪些基本准则?(ABCD)A.空闲让进 B.忙则等待 C.有限等待 D.让权等待24 进程进入等待状态有哪几种方式?(D)A CPU调度给优先级更高的线程B 阻塞的线程获得资源或者信号C 在时间片轮转的情况下,如果时间片到了D 获得spinlock未果25 设计模式中,属于结构型模式的有哪些?(BC)A 状态模式 B 装饰模式 C 代理模式 D 观察者模式填空题(共4题10个空,每空2分,共2分)1 设有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},请写出按二路归并方法对该序列进行一趟扫描后的结果为DQFXAPBNMYCW。2 关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell的排序法,则一趟扫描的结果是QACSQDFXRHMY;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是FHCDQAMQRSYX。3 二进制地址为,大小为(4)10和(16)10块的伙伴地址分别为:_,_。4 设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左、右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。N2,NL,NR、N0都是全局量,且在调用count(t)之前都置为0。[cpp] view plaincopytypedef struct nodestruct node *lchild,*}int N2,NL,NR,N0;void count(node *t)if (t-》lchild!=NULL)if (t-》rchild!=NULL) N2++;else NL++;else if (t-》rchild!=NULL) NR++;else N0++;if(t-》lchild!=NULL) count(t-》lchild);if(t-》rchild!=NULL) count(t-》rchild);}/* call form :if(t!=NULL) count(t);*/Web前端方向简单题(略)其他方向简答题(共2题,每题20分),选作题,不计入总分)1 请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。2 A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。面试笔试:看完本文,记得打分哦:很好下载Doc格式文档马上分享给朋友:?知道苹果代表什么吗实用文章,深受网友追捧比较有用,值得网友借鉴没有价值,写作仍需努力相关自我介绍:
48小时热门

参考资料

 

随机推荐