闭关一个月,终于拿下腾讯Android工程师offer!
前言
为什么要尽量让自己进大厂?
如果毕业就进了大厂,那你将得到业内大牛的指导,以及随处可见的技术碰撞。新技术的跟进也是非常快的,在这样的环境中,你的技术成长自然是非常快的。如果自己足够努力,用不了三年,你可能也将会跟他们水平差不多。
所以,明白这一点的我,很早就已经立下志愿,目标是Android工程师。经过我的努力,付出就是有回报的,我总算进入了腾讯工作。下面分享一下我自己的面经。
面试经历
——腾讯一面:
①针对微服务进行提问:
- 微服务架构
- 框架的实现
- 服务治理
- 分布式一致性
②日志监控系统:
- 考察架构、ELK相关知识,重点要描述ELK的一些架构原理,如倒排索引的原理等;
③消息队列:
- Kafka中消息可以被多个消费者消费吗?
- 选举机制
- HW机制
④数据库和Redis相关:
- 索引的原理
- 几种事务的区别
- 数据结构
- 延时队列如何实现
- 分布式锁原理
⑤其他开放问题:
- 开放问题,不过多描述,如项目中遇到的问题,如何解决的?描述生产过程中运行的问题,并描述排查问题。
——腾讯二面(笔试):
考察具体岗位的技术栈语言的基础知识,题目不难,要求基础扎实和广度,文中不过多赘述。 ——腾讯三面+四面(技术组长面):
腾讯的三面和四面都是技术组长来面的,这个阶段相对来说还是比较紧张的,面试内容则主要是聊解题的思路以及项目经验,考察个人对于技术掌握的一个广度,涉及到比较多的架构设计。
- 项目
- 开放性题:解题思路、同事之间的协作问题。
- 负载均衡
- 算法
- ngnix如何做限流?
- 四层LVS和七层Ngnix的区别
- 微服务架构的设计思路
——腾讯五面+六面(技术总监面):
这两面的面试官应该是技术总监,面试难度应该是这一套流程里最大的,主要考察面试者的两个方面,包括系统设计和架构设计,需要面试者对于技术知识有比较深度的理解和认识。
①针对系统设计提问:
- 秒杀系统如何设计?分接入层、接口层、消息队列层、逻辑层四个方面讲解,接入层可以做服务治理相关事情,接口层做抢购开关、黑白名单、随机拒绝等处理,逻辑层具体抢购逻辑实现,涉及到redis分布式锁以及DB和Redis的一致性问题。
- 分布式事务的几种实现。重点讨论了这几种实现的区别,面试官要求我画出基于可靠消息服务的消息队列实现分布式事务架构图,然后对上游服务和下游服务如何保证消息可靠性和一致性。
②针对微服务架构进行提问:
- 服务拆分的原则
- RPC框架原理
- 配置管理(etcd)的一致性协议raft选举原理
③其他:
- 服务治理
- 服务限流算法
- 服务降级的指标和恢复指标
- 服务熔断
④开放性问题:
- 在项目中,你印象中遇到的印象最深的一个难题,如何解决的?
- 在面试过程中,你觉得面试官问的哪个问题让你印象最深,为什么?
- 生活中有遇到过什么困难吗?
总结
每家公司都有自己的选择标准,我们当然需要迎合公司的要求,但是如果没有技术,一切都是空谈,在具体的面试提问上,我们可以顺着面试官想要的答案上去靠,这就需要我们具备扎实的专业知识,所以大家一定要好好准备,加油!
#android##面试日常[话题]#