网易雷火游戏测试开发1面面经(带脑图)

news/2025/2/19 2:42:31

开场白

面试官很友好,先是自我介绍,面试官应该是做永劫无间手游的,刚好内测的时候玩了几局,简单聊了一下,然后开始正式面试了。

第一个问题,3次握手和4次挥手

  • 回答:
  • 三次握手:TCP 建立连接的过程,包括 SYN(同步)、SYN-ACK(同步-确认)、ACK (确认)三个步骤。
  • 四次挥手:TCP 断开连接的过程,包括 FIN(结束)、ACK(接受)、FIN(结束)、ACK(接受) 四个步骤。

第二个问题,讲讲udp和tcp区别

  • 回答:
  • TCP:面向连接,提供可靠的数据传输,保证数据顺序和完整性,但速度较慢。
  • UDP:无连接,提供不可靠的数据传输,不保证数据顺序和完整性,但速度较快。

第三关问题,延伸问题;你刚刚提到TCP和UDP头部大小不同,它们分别是什么

  • TCP:头部较大(20字节),包含序列号、确认号、窗口大小等信息。
  • UDP:头部较小(8字节),仅包含源端口、目的端口、长度和校验和。

第四个问题,讲讲JVM

JVM就是Java虚拟机

JVM就像是一个神奇的翻译官,它可以把Java代码转换成计算机能理解的语言。具体来说:

1. 当我们编写Java代码时,它会被编译成一种叫做字节码(Bytecode)的中间形式

  • JVM会读取这些字节码,并在不同的操作系统上执行它们
  • 这样,Java程序就可以"一次编写,到处运行"啦!

JVM的主要工作包括:

  • 加载类文件
  • 验证字节码
  • 执行代码
  • 管理内存
  • 提供运行时环境

第五个问题是延伸问的Java的类加载机制

这里博主之前有做相关博客内容可以看看,Java类加载机制-CSDN博客

这里是简单的回答

Java的类加载机制主要分为以下几个步骤:

1. 加载(Loading)

  • 通过类的全限定名获取类的二进制字节流
  • 将字节流所代表的静态存储结构转化为方法区的运行时数据结构
  • 在内存中生成一个代表该类的Class对象

2. 验证(Verification)

  • 确保Class文件的字节流符合JVM规范
  • 检查文件格式、元数据、字节码、符号引用等

3.准备(Preparation)

  • 为类变量分配内存并设置默认值
  • 注意:这里只是设置默认值,不是初始化值哦

4.解析(Resolution)

  • 将常量池中的符号引用替换为直接引用

5.初始化(Initialization)

  • 执行类构造器<clinit>()方法
  • 真正开始执行类中定义的Java程序代码

双亲委派模型的工作流程是:

  • 当一个类加载器收到类加载请求时,首先不会自己尝试加载

2. 而是把这个请求委派给父类加载器去完成

3. 只有当父类加载器无法完成加载时,子加载器才会尝试自己加载

这样的机制可以避免类的重复加载,也保证了Java核心类库的安全性呢!

第六个问题,讲讲java中的缓存是什么

1. 什么是缓存?

  • 缓存是存储在内存中的临时数据
  • 它可以减少重复计算或数据库查询的次数
  • 让程序运行得更快更高效

2. Java中常见的缓存类型:

  • 内存缓存:使用Map或ConcurrentHashMap实现
  • 分布式缓存:如Redis、Memcached
  • 浏览器缓存:用于Web应用
  • CPU缓存:硬件级别的缓存

3. 缓存的优点:

  • 提高系统性能
  • 减少数据库压力
  • 提升用户体验

4. 缓存的缺点:

  • 数据可能不是最新的
  • 占用内存资源
  • 需要处理缓存一致性问题

Java中有很多优秀的缓存框架,比如:

  • Guava Cache:Google提供的轻量级缓存
  • Ehcache:功能强大的Java缓存
  • Caffeine:高性能的Java 8缓存库

使用缓存时,我们还需要考虑缓存策略,比如:

1. 缓存淘汰策略:

  • LRU(最近最少使用)
  • FIFO(先进先出)
  • LFU(最不经常使用)

2. 缓存更新策略:

  • 定时刷新
  • 写时更新
  • 失效时更新

第七个问题,ConcurrentHashMap和HashMap以及Hashtable的区别

1. HashMap:

  • 非线程安全
  • 允许null键和null值
  • 性能最好
  • 不保证元素的顺序
  • 使用数组+链表+红黑树实现

2. Hashtable:

  • 线程安全(通过synchronized实现)
  • 不允许null键和null值
  • 性能较差
  • 是Java早期的集合类
  • 使用数组+链表实现

3. ConcurrentHashMap:

  • 线程安全(通过分段锁实现)
  • 不允许null键和null值
  • 性能接近HashMap
  • 支持高并发
  • 使用数组+链表+红黑树实现

1. 单线程环境:使用HashMap

2. 多线程环境:使用ConcurrentHashMap

3. 遗留系统:可能会遇到Hashtable

算法题

第一题是LCR 085. 括号生成

第二题,二分查找

题目1:查找目标值的第一个出现位置
要求:

    给定一个升序数组 nums 和目标值 target,返回 target 第一次出现的索引,若不存在返回 -1。

    示例:

    输入:nums = [1,2,2,2,3], target = 2 → 输出:1
    输入:nums = [5,7,7,8,8,10], target = 6 → 输出:-1

public int firstOccurrence(int nums[],int target){
        int result = -1;
        int left = 0;
        int right = nums.length-1;
        while (left<=right){
            int mid =left + (right - left)/2;
            if(nums[mid]==target){
                result = mid;
                right = mid - 1;//找更前边的target
            } else if (nums[mid]<target) {
                left = mid + 1;
            }else {
                right = mid - 1;
            }
        }
 
 
        return result;
    }

脑图

看不清可以看附件


http://www.niftyadmin.cn/n/5857210.html

相关文章

初阶c语言(函数练习)

目录 第一题&#xff0c;写一个函数来判断是否是闰年 最终代码 第二题&#xff0c;写一个函数&#xff0c;实现一个整形有序数组的二分查找。 实现代码 第三题&#xff0c;写一个函数&#xff0c;每调用这个函数&#xff0c;这个值都会加一 实现代码 前言&#xff1a; 对…

期权隐含波动率是什么意思?

财顺小编本文主要介绍期权隐含波动率是什么意思&#xff1f;期权隐含波动率&#xff08;Implied Volatility&#xff09;是根据当前期权市场价格&#xff0c;利用期权定价模型&#xff08;如Black-Scholes模型&#xff09;推导出的关于合约标的理论上的价格波动率。它反映了市场…

unity学习38:导入角色和动画,实测用脚本控制trigger和动作状态的转换

目录 1 资源准备&#xff1a;先从unity的 Asset store下载一些free的资源 2 在project/Asset里找到角色模型和动画 2.1 在prefab里找到角色资源 2.2 找到动画资源&#xff0c;一般在Animation下的模型文件fbx下层 2.3 准备工作 2.4 拖拽模型文件里的动作到Animator 2.5 …

快速排序C++模板,面试常考需背熟

快速排序介绍 快速排序&#xff08;Quick Sort&#xff09;是计算机科学领域中极为经典且高效的一种排序算法&#xff0c;它在众多实际应用场景中都发挥着重要作用。该算法由英国杰出的计算机科学家托尼霍尔&#xff08;Tony Hoare&#xff09;于1960年提出&#xff0c;自诞生…

Large Language Model Distilling Medication Recommendation Model

摘要&#xff1a;药物推荐是智能医疗系统的一个重要方面&#xff0c;因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是&#xff0c;目前使用的许多复杂模型往往忽视医疗数据的细微语义&#xff0c;而仅仅严重依赖于标识信息。此外&#xff0c;这些模型在处理首次就…

【Postgresql】Windows 部署 Postgresql 数据库 (图文教程)

文章目录 准备工作Postgresql 下载Postgresql 安装初始化数据库数据库链接设置允许远程连接测试链接 更多相关内容可查看 准备工作 操作系统&#xff1a;Windows 7 或更高版本&#xff08;推荐 Windows 10 或 Windows Server 2016&#xff09;。 硬件要求&#xff1a; 至少 …

gradio创建openai前端对接deepseek等模型流式输出markdown格式文本

环境 gradio3.50.2 openai1.63.1代码 import openai import gradio as gr#导入gradio的包api_key "sk-**a8" api_base "https://api.deepseek.com/v1"import gradio as gr import openai from typing import List, Any, Iteratorclient openai.OpenAI…

mysql开启gtid并配置主从

默认主从都开启了bin log. 1.主从都在/etc/my.cnf中加入并重启服务 gtid_mode ON enforce_gtid_consistency ON 2.在主库创建用户并授权 create user slave identified with mysql_native_password by 123456 mysql>GRANT REPLICATION SLAVE ON *.* to slave% identified…