专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
意外艺术  ·  《洛神赋图》是顾恺之狂磕cp后的产粮?! ·  17 小时前  
康石石  ·  保研奖学金高达10w的院校,是: ·  3 天前  
51好读  ›  专栏  ›  程序员鱼皮

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

程序员鱼皮  · 公众号  ·  · 2024-11-12 19:20

正文

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

整理了一部分开奖信息:

岗位 base 薪资 备注
算法 一线 31*15+30+60 SSP
研发 北京 32*15+60 SSP
后台开发 深圳 29*15+4+2 SP
后台开发 深圳 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 多路复用是什么? 是什么?解决了什么问题?使用场景是什么?

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

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 和布隆过滤器的区别







请到「今天看啥」查看全文