百度提前批go一面
北京-C++/PHP/GO研发工程师(J73089)
https://talent.baidu.com/jobs/center
问题
rpc和http的区别
- RPC(Remote Procedure Call):是一种通过网络从远程计算机程序上请求服务的协议,而不需要了解底层网络技术的细节。RPC允许程序调用远程服务,就像调用本地服务一样。
- HTTP(HyperText Transfer Protocol):是一种用于传输超文本的协议,主要用于Web浏览器和服务器之间的通信。HTTP是无状态的,每个请求都是独立的。
http和https的区别
- HTTP(HyperText Transfer Protocol):是一种无状态的应用层协议,用于传输超文本。
- HTTPS(HTTP Secure):是在HTTP的基础上加入了SSL/TLS协议,用于加密数据传输,确保数据的安全性和完整性。
go的gmp模型
- GMP模型:Go语言的并发模型,包含三个主要组件: G(Goroutine):轻量级线程,由Go运行时管理。M(Machine):操作系统线程,负责执行Goroutine。P(Processor):逻辑处理器,负责调度Goroutine到M上执行。
go的new 和 make的区别
- new:用于分配内存,返回指向零值的指针。
- make:用于初始化内置的数据结构,如slice、map和channel,返回初始化后的值。
从关闭的go channel里面读会发生什么
- 从关闭的channel读取数据时,如果channel中还有未读取的数据,会继续读取数据,直到数据被读完。之后,再次读取会返回零值,并且不会阻塞。
go的引用类型
- Go语言中的引用类型包括:slice、map、channel、interface和function。这些类型的变量存储的是对底层数据结构的引用。
go的hashmap,以及sync下的map
- Go的hashmap:即
map
,是一种键值对数据结构,使用哈希表实现。 - sync.Map:是Go标准库中的并发安全的map,适用于多线程环境下的读写操作。
context的使用
- context:用于在Go中传递上下文信息,控制goroutine的生命周期。常用于处理超时、取消操作和传递请求范围内的数据。
红黑树的特点
- 红黑树是一种自平衡二叉搜索树,具有以下特点: 每个节点是红色或黑色。根节点是黑色。每个叶子节点(NIL节点)是黑色。如果一个节点是红色,则它的两个子节点都是黑色。从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
计算机网络OSI七层模型
- OSI模型分为七层: 物理层:传输原始比特流。数据链路层:提供节点间的数据传输。网络层:负责数据包的路由。传输层:提供端到端的通信。会话层:管理会话和连接。表示层:处理数据格式和加密。应用层:提供网络服务和应用。
tcp和udp的区别
- TCP(Transmission Control Protocol):面向连接的协议,提供可靠的数据传输,保证数据按顺序到达。
- UDP(User Datagram Protocol):无连接的协议,不保证数据的可靠传输,适用于对速度要求高但对可靠性要求低的场景。
SSL是怎么建立的
SSL(Secure Sockets Layer)协议用于在客户端和服务器之间建立安全的通信通道。以下是SSL建立连接的过程:
- 客户端Hello:客户端向服务器发送一个Hello消息,其中包含客户端支持的SSL/TLS版本、加密算法、压缩方法和一个随机数。
- 服务器Hello:服务器响应客户端的Hello消息,选择SSL/TLS版本、加密算法、压缩方法,并发送一个随机数。
- 服务器证书:服务器向客户端发送其数字证书,证书中包含服务器的公钥和由可信的证书颁发机构(CA)签名的证书链。
- 服务器Hello Done:服务器发送一个Hello Done消息,表示服务器Hello阶段结束。
- 客户端验证服务器证书:客户端验证服务器的数字证书,确保证书有效且由可信的CA签名。
- 客户端密钥交换:客户端生成一个预主密钥(pre-master secret),使用服务器的公钥加密该预主密钥,并将其发送给服务器。
- 服务器解密预主密钥:服务器使用其私钥解密预主密钥。
- 生成会话密钥:客户端和服务器使用双方的随机数和预主密钥生成会话密钥,用于对后续通信进行加密。
- 客户端Finished:客户端发送一个Finished消息,表示客户端的握手过程结束。该消息使用会话密钥加密。
- 服务器Finished:服务器发送一个Finished消息,表示服务器的握手过程结束。该消息也使用会话密钥加密。
- 安全通信:客户端和服务器使用生成的会话密钥进行加密通信,确保数据的机密性和完整性。
通过上述步骤,SSL协议在客户端和服务器之间建立了一个安全的通信通道,确保数据在传输过程中不被窃听和篡改。
算法
5L的水桶和6L的水桶如何得到3L的水
等于k值的子数组个数
不含重复字符的最长子串
总结
osi七层模型忘了,后面面试官就问了数据链路层,网络层和传输层,也忘了,然后面试官就问我是不是没有学过,我说我没有复习,有点难崩。大部分是go的问题,算法题也挺简单。最后我问了他们是做什么的,他们做的是tob,用到k8s和go,我猜是做的云原生相关的东西。
#百度求职进展汇总#