多益网络客户端开发面经(一面 + HR面)

面试时间大概是八月初的时候,测评+笔试->3天->一面->5天->HR面;
后续结果是HR面无了,刷个经验
1.自我介绍  
2.看你后端比较多,为什么投前端(客户端)  
3.介绍一下C++;和C的区别  
4.引用和指针  
5.深浅拷贝  
6.智能指针  
7.三大特性的实际应用是什么,你的项目中哪里用到了  
8.提到了MVC架构,仔细介绍一下  
9.项目模块之间的交互  
10.消息队列主要用于解决什么问题,什么情况下使用  
11.消息队列的消息和队列怎么理解  
12.介绍protobuf、特性  
13.消息队列怎么保证数据一致性  
14.mysql和redis的区别  
15.了解nosql吗,介绍一下  
16.redis的持久化  
17.redis的变量类型  
18.算法题
    - 实现一个道具,有类型、品质、最大道具数量等属性  
    - 实现一个道具管理类,包含具体的增删查改接口  
    - 根据类型、品质、最大道具数量进行排序,输出一个列表  
    - 假设一个背包有10000个道具,如何优化使其流畅
#我的秋招日记##邪修秋招思路##发面经攒人品##面经#
全部评论
佬,HR面都聊啥了呀
点赞 回复 分享
发布于 2025-09-10 18:47 江苏

相关推荐

01-10 21:01
门头沟学院 Java
比较经典的题目,如果之前没写过的可能需要想一番,首先实现缓存最先想到的就是hashmap,O1级别的查找速度很适合做缓存,然后就是要实现lru,参考redis的zset底层实现,zset也是使用了两个数据结构跳表+hashmap,使用跳表实现排序,我们这里也是使用双向链表实现lru功能,每次查询对应数据的时候就将数据移除重新加到头部,也就是更新使用频率,附上代码如下比较经典的题目,如果之前没写过的可能需要想一番,首先实现缓存最先想到的就是hashmap,O1级别的查找速度很适合做缓存,然后就是要实现lru,参考redis的zset底层实现,zset也是使用了两个数据结构跳表+hashmap,使用跳表实现排序,我们这里也是使用双向链表实现lru功能,每次查询对应数据的时候就将数据移除重新加到头部,也就是更新使用频率//通过自定义节点,hashmap,哨兵节点//删除时通过pre和next指针快速删除节点//添加时只操作头尾,通过哨兵节点快速添加节点class LRUCache {private class Node{//保留key,不然在删除尾结点的时候不能返回key让map也删除//而map又不知道尾结点是哪个int key,value;Node pre,next;Node(int key,int value){this.key=key;this.value=value;}Node(int key,int value,Node pre,Node next){this.key=key;this.value=value;this.pre=pre;this.next=next;}}private int capacity;//通过哨兵节点可以快速找到头结点和尾节点private Node dummy;//通过hashmap快速找到节点,通过节点pre指针和next指针快速实现删除private Map<Integer,Node> map=new HashMap();public LRUCache(int capacity) {this.capacity=capacity;//不能dummy=new Node(-1,-1,dummy,dummy)//这样会导致dummy的pre和next为nulldummy=new Node(-1,-1);dummy.pre=dummy;dummy.next=dummy;}public int get(int key) {if(!map.containsKey(key)) return -1;//如果存在,更新使用频率(加到头部)Node node=map.get(key);remove(node);addFirst(node);return node.value;}public void put(int key, int value) {Node node;if(!map.containsKey(key)){while(map.size()>=capacity){int removeKey=removeLast();map.remove(removeKey);}node=new Node(key,value);addFirst(node);}else{//否则更新数值重新加入node=map.get(key);node.value=value;remove(node);addFirst(node);}map.put(key,node);}public void remove(Node node){Node pre=node.pre;Node next=node.next;pre.next=next;next.pre=pre;}public int removeLast(){Node tail=dummy.pre;remove(tail);return tail.key;}public void addFirst(Node node){//通过哨兵结点快速找到头结点Node head=dummy.next;head.pre=node;node.next=head;dummy.next=node;node.pre=dummy;}}
查看1道真题和解析
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-11 01:50
点赞 评论 收藏
分享
评论
4
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务