【社招】测开网易二面
📍面试公司:网易
🕐面试时间:7.22
💻面试岗位:测开
❓面试问题:
1.自我介绍
略
2.项目深挖
略(感觉自己回答的还不错,所有问题都有说法,都能打上来,这也为后面的噩梦打下了铺垫)
3.做个题吧
对一个json文件做解析,当data为false代表出错,为true代表修复完成,求出主城和白刃战的修复时间
文本:
[ { "name": "进入主城和海图测试", "data": false, "error": "报错", "time": 1703598378 }, { "name": "进入主城和海图测试", "data": false, "error": "报错", "time": 1703598678 }, { "name": "进入白刃战测试", "data": true, "error": "", "time": 1703599222 }, { "name": "进入主城和海图测试", "data": true, "error": "", "time": 1703633378 }, ... ]
我写了个字符串处理的,他叫我先别写了,说一下思路,我就说先分割开每个json段,然后检测data是true还是false,如果是false就记录错误时间和对应的错误类型,只有当遇到同样类型的修复时间的时候(data=true)再去用修复时间减错误时间得到修复时间
面试官表示:可以了知道你的思路了,不用写了。字符串处理起来耗时很多的,另外,你们自动化是用python吗?(言下之意就是我们主要用py的)
确实java可能不太好处理,我们自动化也是java
(心声:我真的忘了怎么搞了,而且当时看到json数据直接就慌了,因为我根本没用过java处理json数据过,完全忘了这个是python最喜欢的数据类型,还是积累少了+心态不好呀,刚好戳中自己的软肋了,而且其实只要稍加转换语言就能反应过来,当时就是没想到)
Python-字典代替:(久远的记忆,生疏了很多,反正当场每做出来,后面还是自己掰扯出来了。。。感觉是不是要锻炼一下自己同时使用2种语言的能力?),注意点在于需要收集第一次拿到的开始和结束时间
dicts = [ { "name": "进入主城和海图测试", "data": False, "error": "报错", "time": 1703598378 }, { "name": "进入主城和海图测试", "data": False, "error": "报错", "time": 1703598678 }, { "name": "进入白刃战测试", "data": True, "error": "", "time": 1703599222 }, { "name": "进入主城和海图测试", "data": True, "error": "", "time": 1703633378 } ] blade_true_t = blade_false_t = city_true_t = city_false_t = 0 for e in dicts: if e['data']==False: if e['name']=='进入白刃战测试': if blade_false_t==0:blade_false_t = e['time'] else: if city_false_t==0: city_false_t = e['time'] else: if e['name']=='进入白刃战测试': if blade_true_t==0:blade_true_t = e['time'] else: if city_true_t==0:city_true_t = e['time'] blade_fix_time = blade_true_t-blade_false_t city_fix_time = city_true_t-city_false_t print(f'白刃战修复时间:{blade_fix_time}秒' if blade_true_t>0 and blade_false_t>0 else "白刃战修复时间:INF") print(f'主城和海图修复时间:{city_fix_time}秒' if city_true_t>0 and city_false_t>0 else "INF")
(这里再附上java的json处理----因为我之前没有用java处理过json,所以不太会)
java-json文件:(注意要用下面的pom.xml配置,因为如果不用fastjson就不好做)
import java.util.*; import java.lang.*; import java.nio.file.*; import com.alibaba.fastjson.JSON; public class Main{ public static void main(String[] args){ try{ String s = new String(Files.readAllBytes(Paths.get("src/fixLog.json"))); List<LinkedHashMap> list = JSON.parseArray(s, LinkedHashMap.class); System.out.println(list); //定义首次出错和修复和时间 int firstErrorTime_city = 0, firstFixTime_city = 0, firstErrorTime_blade = 0, firstFixTime_blade = 0; for(LinkedHashMap map: list){ if((boolean)map.get("data")==false){ if(map.get("name").equals("进入主城和海图测试")) {if(firstErrorTime_city == 0) firstErrorTime_city = (int)map.get("time");} else if(firstErrorTime_blade == 0) firstErrorTime_blade = (int)map.get("time"); }else{ if(map.get("name").equals("进入主城和海图测试")) {if(firstFixTime_city == 0) firstFixTime_city = (int)map.get("time");} else if(firstFixTime_blade == 0) firstFixTime_blade = (int)map.get("time"); } } int cityFixTime = firstFixTime_city>0 && firstErrorTime_city>0? firstFixTime_city - firstErrorTime_city:-1, bladeFixTime = firstFixTime_blade>0 && firstErrorTime_blade>0? firstFixTime_blade - firstErrorTime_blade:-1; System.out.println("进入主城和海图修复时长:"+ cityFixTime); System.out.println("进入白刃战修复时长:"+ bladeFixTime); }catch (Exception e){ e.printStackTrace(); } } }
java代码对应的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>WriteFreely</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>
4.你一般怎么学习新语言
(我以前被问到过类似的问题)
我有2段学习新语言的经历,学校都是C,读研直接接触AI模型还要做项目,但是当时py一点都不会,就先看视频学个基础然后一边干项目一边学,后来上班了转java也是一样的
5.你了解Unity和C#吗?
以前本科的时候毕设做的unity和C#的项目,也是浅尝辄止
反思后的结构化表达:
Unity简介(个人总结版): ①Unity是什么?Unity是一款跨平台的游戏引擎,可以支持U2D或者U3D创建2d或者3d游戏并发布到PC、PS或移动端 ②Unity底层:Unity底层是C++写的,但是却支持用户用更简单的C#编写脚本,并且是图形化的操作界面 ③Unity的功能:很多组件,这里举一些例子。定义物理性状的Mesh,Mesh Render(渲染器)将材质和光照应用于物体;物理学组件rigidBody(刚体)和Collider(碰撞器),可以模拟现实中的重力和碰撞; C#脚本:实现游戏逻辑,比如扣血 ;动画播放器:可以配合脚本在适合的时候播放动画,比如开门。 ④实际开发:在UnityHub上创建一个Unity项目,一进去就有个主相机和光源,可以往里面加入组件,Play就是开始调试;开发完成后,可以打包到你想要打包的平台上去
6.你了解哪些游戏测试的东西?
不太理解你说的问题
比如引擎,unity你了解吗
不是很了解
(这里感到面试官已经不是很感兴趣了,我没有提前准备这个问题,不太清楚他想要问的重点)
7.你对网易的这个项目了解多少?
更加空泛的一个问题,我仍然没有任何准备,我也不清楚他想要我回答哪方面的问题,怕说的东西low了他不感兴趣,最后也只能是一句话都说不出来草草收场
8.反问
问了引擎:自研的
技术栈:py,偶尔用go,js,C#
🙌面试感想:
面试时长50min,肯定是寄了,但是也侧面了解了他们喜欢问的问题和技术栈,还有自己需要准备一下关于文件读取输出、时间方面的java代码功底;还有对引擎,项目的了解吧
#面试问题记录#