鹅厂刚刚开奖,就被不少同学吐槽了。。

科技   2024-11-12 19:21   上海  

最近收到鱼友反馈,说鹅厂开奖了,于是我去看了一下开奖情况:目前开奖的岗位以深圳居多,大部分岗位还没有开奖。但已经能看到不少同学在吐槽开奖薪资了。

整理了一部分开奖信息:

岗位base薪资备注
算法一线31*15+30+60SSP
研发北京32*15+60SSP
后台开发深圳29*15+4+2SP
后台开发深圳27*15+30硕士双一流
测开深圳25*15双非本,无股权和签字费
后端西安13*16+12k+20k腾讯云智

只看薪资,今年鹅厂给得不算小气,但今年鹅厂一部分 offer 是把房补和服务奖都融入了 base ,所以有的同学吐槽,这薪资看起来“光鲜亮丽”,其实还不如去年的烂白菜。

对比去年 24 届的技术岗开奖:

  • 白菜:(16-18)*16

  • sp:(22-23)*16

  • ssp:(24+)*16

后续的开奖我们也会持续关注,欢迎大家加入编程导航,交流开奖心得。

今天为大家带来 编程导航 里一位鱼友秋招的腾讯面经,大家也可以自己试着答一下,看自己能回答上来多少。

腾讯面经:

一、HTTP 请求报文如何组成的

1)请求行:请求方法、请求URL、HTTP协议版本

2)请求头:

User-Agent:产生请求的浏览器类型

Accept:客户端希望接受的数据类型

Content-Type:发送端发送的实体数据的数据类型

Host:请求的主机名,允许多个域名同处于一个IP

3)空行:用于通知服务器以下不再有请求头

4)请求体:封装POST请求消息的请求参数的,GET没有请求体

二、HTTP1.0 和 HTTP1.1 的区别

HTTP1.0只保持短暂的连接,每次请求都需要与服务器建立一个新的TCP连接。

HTTP1.1可以支持长连接,同时还可以支持客户端异步请求数据

三、介绍 HTTP 和 HTTPS(从概念 - 特性 - 使用场景 - 解决问题)

1)概念

HTTP(HyperText Transfer Protocol,超文本传输协议):是一种用于在网络上传输超文本数据的应用层协议。它是无状态的,即每次请求之间没有状态保持。HTTP 协议使用明文通信,数据在客户端和服务器之间传输时不进行加密。

HTTPS(HyperText Transfer Protocol Secure,安全超文本传输协议):是 HTTP 的安全版本。它通过使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security)协议对传输的数据进行加密,从而确保数据在网络上传输时的机密性和完整性。

2)特性

HTTP 的特性

无状态:HTTP 是无状态的协议,每个请求都是独立的,不保留之前请求的任何信息。

灵活性:HTTP 支持多种数据类型(文本、图片、视频等)的传输。

易于实现:HTTP 协议结构简单,容易实现和应用。

HTTPS 的特性

安全性:通过 SSL/TLS 加密协议,HTTPS 提供了数据传输的机密性和完整性,防止数据在传输过程中被窃听或篡改。

身份认证:HTTPS 使用数字证书验证服务器的身份,确保客户端与合法的服务器通信,防止中间人攻击。

数据完整性:HTTPS 能检测数据在传输过程中是否被篡改,确保数据完整性。

3)使用场景

HTTP 的使用场景

公开的、非敏感信息传输:用于不涉及敏感信息的网页浏览、公共API的调用等场景。例如,浏览新闻网站、博客文章等不涉及用户隐私的数据。

内部网络通信:在企业内部网络中,可能不涉及数据泄露的风险时,也可以使用 HTTP 协议。

HTTPS 的使用场景

敏感信息传输:涉及用户隐私、金融交易、个人数据的场景,如登录页面、支付页面、电子邮件服务等。

网站安全性提升:使用 HTTPS 可以提高网站的可信度,浏览器地址栏会显示绿色锁标志,用户会更信任使用 HTTPS 的网站。

符合安全标准:许多行业对安全有强制要求,如金融服务、医疗保健等,需要使用 HTTPS 来保护敏感信息。

4)解决的问题

HTTP 解决的问题

统一通信协议:开发跨平台的网络应用程序奠定了基础。

支持超文本传输:使得互联网浏览器能够请求并显示网页内容

HTTPS 解决的问题

数据加密:HTTPS 通过加密传输的数据,保护敏感信息,防止被攻击者窃听。

身份验证:HTTPS 使用数字证书验证服务器身份,确保客户端连接的是合法服务器,防止中间人攻击。

数据完整性:通过校验机制,HTTPS 可以检测数据是否在传输过程中被篡改,确保数据的完整性。

四、HTTP 无状态的特性带来了什么问题?

无法保存用户会话信息,增加开发的复杂度,

客户端采用 Cookie

服务端采用 Session

采用 JWT 生成  Token 保留状态

容易遭受攻击(例如:XSS跨站脚本攻击)

XSS:攻击者往 web 页面里插入恶意的 HTML 代码(Javascript、css、html 标签等),当用户浏览该页面时,嵌入其中的 HTML 代码会被执行,从而达到恶意攻击用户的目的。

五、键入网址到网页显示,期间发生了什么?

1)解析URL,找到DNS,从而获取目的服务器的IP地址

2)应用层HTTP报文、传输层TCP报文、网络层IP报文、链路层`MAC报文组装数据包

3)送别者交换机送到出境子网的大门——路由器

PS:

1)我们会发现源IP和目的IP他们始终如一,而途径不同的交换机和路由器,MAC地址会一直变化。

2)交换机是二层网络设备(内部维护MAC地址和端口映射关系表)

3)路由器是三层网络设备(内部维护IP地址和接口映射关系表)


六、I/O 多路复用是什么?是什么?解决了什么问题?使用场景是什么?

是在单线程中能够管理多个输入/输出通道技术,解决了之前每个通道都要建立一个独立的线程,耗费资源的问题。包含三种常见的复用机制 selectpollepoll。常用于实现高性能的服务器和客户端应用程序、网络编程等。

PS: 关于三种复用机制的介绍

七、你说登录鉴权你采用的方案是什么呢?优势和劣势分别是什么呢?你还能想到其他的方案进行鉴权呢?

(1)JWT

(2)常⻅的登录鉴权⽅式有哪些? 

面试鸭刷题软件里的回复:https://mianshiya.com/question/1835157125712117762

八、JWT 的 Token 的数据组成有哪些?

1)头部(Header)

2)负载(Payload)

3)签名(Signature)= 编码后的头部 + 编码后的负载 + 秘钥

token = header.payload.signature

可以选择不同的加密算法进行加密(HMAC SHA-256、RSA、HS256、HS384)算法强度越来越弱

追问:密码盐

九、JWT技术的优缺点

优点

1)更少的数据库连接——基于算法来实现身份认证

2)无状态——不需要向传统的Web应用将用户信息存入到 Session中

缺点

1)高度依赖服务端的秘钥(硬编码)

2)服务端无法管理客户端的信息(客户端存储JWT信息)

3)服务端无法主动推送消息(比如:token令牌过期,客户端无感知)

4)冗余的数据开销(多占用内存空间)

5)令牌有客户端保存,易于盗取

6)重放攻击(添加nonce或者timeStamp时间戳)

追问:既然JWT有这么多缺点,你有什么好的措施进行防范呢?

1)清楚已泄露的令牌:在服务端进行存储生成token令牌,如有异常,直接清除

2)敏感操作:删除、更新、新增、上传、下载等,定期检查用户身份

3)监控请求频率:监控用户在单位时间内的请求次数,当单位时间内的请求次数超出预定阈值,则判定该用户密令是有问题的

4)设置过期时间、使用高强度算法、JWT黑名单、避免URL携带传递令牌

追问:我们知道Session和JWT都是没有解决CSRF、XSS等攻击,为什么不用Session?

本意就是在说关于Session进行用户信息管理这块的缺点?

1)增加了服务端的内存

2)扩展性限制(比如:关于用户激增问题,多用户如何管理他们用户信息呢?是由第一点引出的)

追问:那你知道哪些用于用户身份认证的技术么?

Session、OAuth2.0、SSO

十、热点Key解决方案(读多写少的场景)

典型:缓存击穿

1)二级缓存——应用程序的本地缓存(GuavaCache、Caffine、甚至HashMap)

2)将热Key分散到不同的服务器中(热Key备份分到不同的Redis中,随机访问,以免压垮Redis)

3)细分热Key,有点像缩小锁粒度,将热Key拆分,打到不同Key上,达到分流降热的效果

4)将核心和非核心的业务进行隔离,以免出现热Key事件崩塌影响核心业务

十一、redis常见的数据结构(底层描述,根据源码)

追问:Bitmap 和布隆过滤器的区别

在 Redis 中的 Bitmap 可以实现布隆过滤器机制,在 Java 客户端的 Redission 可以直接调用方法进行实例化一个布隆过滤器。

Bitmap 常用于海量数据查询且能够接受一定的容错(误判)

追问:你了解过跳表吗?压缩列表?

跳表的数据结构是链表 + 多级索引结构,redis的有序集合采用的数据结构其中有一个就是跳表,相比于红黑树,跳表的区间查询略胜一筹。时间复杂度是 Logn。

PS:由此可以联想到 MySQL 当中索引也是利用这个思路,进行快速查询数据。

压缩列表:本质就是一个数组,在头部添加了列表长度、尾部偏移量、列表个数以及数组尾部添加了列表结束标识符。能够有利于查找数据的头部元素和尾部元素。

追问:有序集合什么时候会使用压缩列表,什么时候会用上调表?

十二、生产者 - 消费者在系统中如何实现(架构 or 源码)

通常使用互斥锁和信号量方法,在该方法,要借助缓冲队列(共享内存)进行进行实现。三个变量(缓冲队列长度变量、生产者等待缓冲区不满、消费者等待缓冲区非空)。通过该方法,实现生产者 - 消费者的同步问题

十三、进程是如何通信的?

1)共享内存

2)信号量(信号量是一种用于进程间同步和互斥的机制,可以通过控制对临界资源的访问来实现进程之间的协调。)

3)管道流

十四、线程是如何通信的?

1)锁机制(互斥锁、读写锁)

2)条件变量

3)信号量

十五、进程和线程的关系(从概念得出结论)

十六、介绍 Tcp 和 Udp(从概念 - 特性 - 使用场景 - 解决问题)

直接进行八股吟唱。




👇🏻 点击下方阅读原文,获取鱼皮的编程习路线、原创项目教程、求职面试宝典、编程交流圈子。


往期推荐

我的编程学习小圈子

小米开奖,薪资差点意思。。

别人秋招在开奖,我还是零Offer,坚持有意义吗

被大厂白菜价劝退

在蚂蚁实习,好憋屈

我的新书,冲上了京东榜一!

程序员鱼皮
一手科技热点和编程干货 | 免费编程学习网 codefather.cn
 最新文章