【社招】测开网易二面
📍面试公司:网易
🕐面试时间: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代码功底;还有对引擎,项目的了解吧
#面试问题记录#
查看18道真题和解析
网易游戏公司福利 566人发布