格灵深瞳后台开发一面

本文最后更新于 2024年8月12日 晚上

格灵深瞳后台开发一面

全程开放题,可能跟公司开发用Go语言有关,面试官没法问太细的技术要点。

实习的期望和目标是什么

  • 个人层面:希望能够在实习过程中通过实践学习提高自己的技术能力,能够学习到真正的企业级开发所必备的技能。
  • 公司层面:如果有幸能够加入公司这个大团队,希望在自己力所能及的范围内,做出自己的一份贡献。

为什么拿RPC框架来练手

现在的开发项目大多是分布式架构,不同于以前的单体架构。所以通过对RPC框架的学习,能够学习到基本的分布式设计思想,在写项目的过程中,也了解了服务限流、服务熔断的概念和实现方法,以及负载均衡的算法实现,这些可以为以后做更大的项目打下坚实的基础。

做项目有哪些收获

  • 在通信方面,明白了Netty相对于Socket的优势
  • 明白了分布式设计的基本思想
  • 学会了Zookeeper和Netty的基本使用
  • 学会了限流、熔断以及负载均衡的基本思想及其实现

如何对比序列化协议哪个好的,为什么protobuf更高效呢

json是以传字符串的格式在网络中进行传输的,而Protobuf是采用二进制编码格式来传输

  • 序列化和反序列化的时间:使用JMH和Faker来进行了测试,发现protobuf的序列化和反序列化时间都比json要小
  • 占用内存:Protobuf比JSON少了45个byte。由于ProtoBuf采用二进制格式,数据结构更为紧凑,因此在序列化和反序列化过程中所需的内存较少。Protobuf比JSON序化以后占用的字节数更少,在网络传输的过程中Protobuf更具有优势。
  • 对开发者的友好程度:JSON 开发者能够很好的识别,而Protobuf会出现乱码的情况。这里说明了一个问题:在对程序员的友好程度上JSON优于Protobuf。而且使用Protobuf还需要实现定义一个有关传输对象的数据结构文件,而json在序列化的过程中,可能导致数据类型改变,那么在反序列化时还要检查数据类型是否匹配,否则强制转换。

http请求针对回过程详细叙述一下

用生活中的实例场景来类比计算机网络

计算机网络主要是负责计算机之间的通信。

快递在现实生活中的应用

读书期间是否做过比较用心的项目

平常用git吗

为什么用kafka呢,不用其他的呢

Kafka的主要优势

与其他消息队列相比的优势

讲一讲kafka架构

一文带你搞懂 Kafka 的系统架构(深度好文,值得收藏) - Data跳动 - 博客园 (cnblogs.com)

Kafka基本架构

  • Producer:生产者,负责将客户端生产的消息发送到 Kafka 中,可以支持消息的异步发送和批量发送;
  • broker:服务代理节点,Kafka 集群中的一台服务器就是一个 broker,可以水平无限扩展,同一个 Topic 的消息可以分布在多个 broker 中;
  • Consumer:消费者,通过连接到 Kafka 上来拉取消息,用于相应的业务逻辑处理。
  • Topic:消息是以 Topic 为单位进行归类的,Topic 在逻辑上可以被认为是一个 Queue,Producer 生产的每一条消息都必须指定一个 Topic,然后 Consumer 会根据订阅的 Topic 到对应的 broker 上去拉取消息;
  • Partition:为了提升整个集群的吞吐量,Topic 在物理上还可以细分多个分区,一个分区在磁盘上对应一个文件夹。由于一个分区只属于一个主题,很多时候也会被叫做主题分区

为什么计算机里面有些小数不能表示出来

有些小数为什么就是表示不出来

除了学习你有其他兴趣爱好吗

你有没有特别喜欢的技术博主,哪些品质你觉得时榜样

算法

24. 两两交换链表中的节点 - 力扣(LeetCode)

算法思想

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(-1, head);
ListNode cur = dummy;
while(cur.next != null && cur.next.next != null) {
ListNode tmp = cur.next;
ListNode tmp1 = cur.next.next.next;

cur.next = tmp.next;
cur.next.next = tmp;
cur.next.next.next = tmp1;

cur = cur.next.next;
}
return dummy.next;
}
}

格灵深瞳后台开发一面
https://love-enough.github.io/2024/08/12/格灵深瞳后台开发一面/
作者
GuoZihan
发布于
2024年8月12日
更新于
2024年8月12日
许可协议