大家好,我是二哥呀。
前面给大家聊了很多大厂的开奖情况,有些小伙伴表示可望不可及,那今天就来给大家盘一下腾讯云智的薪资水平,方便大家做个参考。
硕士 211,软件开发岗,给了 13k,还有 20k 的签字费,真的是比工资都高了,base 西安 本科其他,系统测试,给了 11.5k,还有 4 个月的年终奖,不让 a,统一批发价,base 武汉 本科其他,后端开发岗,给了 14k,a 了薪资,社招,主体是云智研发 本科其他,后端开发,给了 13k,第一年有房补,还有签字费 本科其他,后端开发,给了 14.5k,还有 24k 的签字费,12k 的房补,公积金是按照 12% 缴纳,base 武汉 本科 985,Java 岗,刚打电话谈薪给了 13k,听说比较 wlb
大家对腾讯云智应该是有所耳闻,也是国内最高档的内包之一了,除此之外,还有华为 OD 和数字马力。
岗位大多集中在二线互联网城市(注意前缀,不是 GDP),比如说武汉、西安、长沙、郑州等等,薪资待遇和技术氛围比很多小公司强很多,还是能接触到核心技术和核心业务的。
有同学反馈说,工卡和本部一样,可以进本部公司,和深圳员工分布式办公,大部分部门都能按点下班,没有加班要求;武汉某层楼基本上 8 点就走了 90%。
对于不想去一线互联网城市卷的小伙伴来说,可能就是最优的选择。
像武汉小米,今年一些小伙伴的薪资只能开到 17k,甚至更低的 15k,还是 985 硕、211 硕这种学历,对比腾讯云智,真没有多大的优势,
再比如说我们河南郑州,你让我拿出比数字马力更好的互联网公司,我一时间还真有点不知所措(🥲)。
那接下来,我们就以 Java 面试指南中收录的腾讯云智面经同学 32 一面为例,来看看腾讯云智的面试官都喜欢问哪些问题,好摸个底。
这是一名球友的真实面经,他当时项目用的是技术派和 MYDB。
1、《30 天速通 Java.pdf》下载 2、三分恶面渣逆袭在线版:https://javabetter.cn/sidebar/sanfene/nixi.html
腾讯云智面经同学 32 一面
项目立意,是否上线,上线考虑过用户数吗?
由于平常热爱技术分享,于是就萌生一个大胆的想法,做一个比 CSDN、掘金、知乎更厉害的内容社区,起名叫技术派。
技术派里面用到的都是互联网当下最流行的技术架构,骨架是通过 Spring Boot+Mybatis-Plus 搭建的,并且是前后端分离的,admin 端用的是 React + TypeScript,其中还用到了数据库 MySQL、缓存中间件 Redis、搜索引擎 ElasticSearch、nosql 数据库 MongoDB、容器化技术 Docker、消息中间件 RabbitMQ、权限安全框架 SpringSecurity、日志框架 Logback、 接口文档 Knife4j、及时消息通信 WebSocket 等技术栈,并且对接了当前最火热的 AI 大模型 OpenAI 和讯飞星火 API,项目支持一键启动和部署,这个过程让我的技术得到了极大的提升。
最近还对接了微信支付和支付宝支付,以及文章付费阅读的功能,感觉有一个属于自己的实战项目可以不断地迭代,锤炼自己的技术,这个过程还是蛮有意思的。
我们的技术派已经上线,域名是 paicoding.com,你也可以参考其他球友的,比如说编程汇。
目前注册用户大概有 6000 多个,PV 每天有 5000 左右。
微信公众号扫码登陆的实现
用户在前端点击登录时,会展示公众号二维码和待输入的验证码,并会和前端构建一个半长连接,同时保存验证码和半长连接之间的映射关系。
当用户向公众号发送验证码时,微信公众平台会将用户发送信息转发给技术派的服务器,然后通过验证码来识别请求登录的用户身份。
由于验证码保存了和半长链接的映射关系,所以可以找到该半长连接,实现用户的自动登录跳转。
RabbitMQ 连接池用的什么阻塞队列?为什么?队列大小?怎么确定这个大小是合适的?
使用的是 LinkedBlockingQueue,它是一个基于链表的阻塞队列。
LinkedBlockingQueue 的优点是锁分离,很适合生产和消费频率差不多的场景,这样生产和消费互不干涉的执行,能达到不错的效率。
队列大小生产环境是 10 个,因为我们是小型系统,通常设置在 10-50 个足够用了。可以通过监控队列的使用率、请求等待时间,和 RabbitMQ 的负载来动态调整,比如说 pool.size() / poolSize
如果经常接近 100%,说明连接池偏小;如果请求经常阻塞等待连接,说明连接池偏小;如果 RabbitMQ 负载过高,说明连接池偏大。
Redis 计数统计和活跃度排行怎么实现的?
由于 Reids 的内存具有高性能和存储能力,并且实现原子性操作,所以非常适合用来做简单的计数统计,通常会使用 INCR 或者 INCRBY 来完成自增操作,就可以实现实时计数功能。
对于如何通过 Redis 实现排行榜,详见技术派教程。
追问:如果 Redis 挂了排行榜怎么展示?有存历史榜单吗?为什么不用 MySQL 实现?
我们做了 Redis 的持久化,当 Redis 挂掉重启时,会自动加载 AOF 和 RDB 中的数据以恢复排行榜。
我们会直接通过 Redis 的 hash 数据结构来维护一个用户的历史操作记录表,以保证活跃度更新时的幂等性。
之所以没用 MySQL 实现,是因为这样更加轻量级,如果严谨一点,做 MySQL 持久化也是可以的,只不过就需要多一层 DB 操作的步骤了。
怎么部署的?Linux 常用命令?
技术派在生产环境中有多种部署方式,一种是通过 shell 编写自动化脚本,主要包括 Git 拉取源码,Maven 自动编译打包,nohup 命令运行 jar 包服务等,部署的时候只需要执行 launch.sh start
命令就 ok 了,另外一种是通过 Docker 的方式进行部署。
服务出了问题怎么排查?日志的实现?
我们通过 Logback + AOP + TraceID 记录了详细的接口访问日志,当出现 error 级别的错误时,还会发邮件报警。
当管理员(主要是我)收到邮件报警时,会第一时间登录服务器,通过查找错误原因然后解决它。
客户端socket发送消息,服务端挂了会发生什么情况?
当服务端挂掉后,客户端的 WebSocket 会触发 onerror 事件,应该在此事件中加入重连机制。
近半年有没有看什么技术视频或书籍?有什么收获?
近半年主要看了周志明老师的《凤凰架构》,还有《从根上理解 MySQL》,以及《深入理解计算机系统》等。
《凤凰架构》让我明白,“软件研发中任何一项技术、方法、架构都不可能是银弹”,我们不仅应该从更宏观的架构方面去理解一个可靠的系统是如何研发出来的,还应该去关注一些底层的技术细节,以及有没有一些更轻量级的解决方案。
《从根上理解 MySQL》让我明白,原来 InnoDB、B+树、事务的底层知识原来是如此巧妙,比如说 B+树是个矮胖子,所以他比二叉树这种细高个一次能搬更多的砖,也就是磁盘的 IO 次数会少很多,因此他的性能也就更好。
《深入理解计算机系统》让我理解进程间的交互和通信是如何完成的,比如说信号量可以理解成红绿灯,红灯停(信号量为零),绿灯行(信号量非零)。它本质上是一个计数器,用来控制对共享资源的访问数量。
ending
一个人可以走得很快,但一群人才能走得更远。二哥的编程星球已经有 6700 多名球友加入了,如果你也需要一个良好的学习环境,戳链接 🔗 加入我们吧。这是一个 编程学习指南 + Java 项目实战 + LeetCode 刷题 + 简历精修 的私密圈子,你可以阅读星球专栏、向二哥提问、帮你制定学习计划、和球友一起打卡成长。
两个置顶帖「球友必看」和「知识图谱」里已经沉淀了非常多优质的学习资源,相信能帮助你走的更快、更稳、更远。
如果觉得有帮助,不妨随手点个赞、在看、转发三连吧,如果你想第一时间收到推送,也可以给我加个星标🌟谢谢你看我的文章,我们明天见。
最后,把二哥的座右铭送给大家:没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。共勉 💪。