interviews,

2019暑假跳槽总结-如何准备IT技术面试

波斯王子 波斯王子 Follow Oct 07, 2019 · 1 min read
2019暑假跳槽总结-如何准备IT技术面试
Share this

总体来讲,这次跳槽不算成功,未及我的预期目标(年薪XX万+¥),仍需继续努力,发奋图强!

最最最重要的还是经典算法、算法复杂度和Leetcode算法题。

  1. 仔细想想,也与年初制定的看书学习计划执行不力有关,当时是这么想的:

    工作时间学习:Angular7 / MySQL高可用常见的运维内容,业余时间学习:架构,Go,算法,DB,协议,每月主要攻一个主题,不拖泥带水,六月初端午节后开始出去面试,七月底之前定好新司

  2. 到六月份,发现上面要学的内容几乎都无所进展,于是想当然地认为自己可以胜任“全栈工程师”的角色,当时是这么想的:
    前端各框架类库(js,typescript,Angular2,React,Bootstrap4)的熟练运用,rxjs响应式编程
    后端各种编程语言技术框架(Python,Django,Tornado,Java,SpringBoot,Golang等)的熟悉和快速上手
    数据库原理的熟悉,常用的分布式、高可用架构
    
  3. 七月初在匆忙改好CV,还啥都没准备的情况下就出去面试,由于基础不扎实+没有针对性地准备面试题,碰了一鼻子灰,然后连续三四周不断地碰壁,比如下列简单的问题都答得不好:
    Python里的字典是怎么实现的,hash碰撞怎么处理的
    如何获取一个对象的所有属性和方法
    Python里的有序字典实现方式,3.5之后字典是有序的?
    Python的作用域
    MySQL的架构原理,分页,分库分表,如何查询某条记录,SQL查询Groupby,Having
    SQL是怎么执行的
    操作系统,Linux下面的kill是怎么实现的
    网络分层,每一层有哪些协议,TCP/IP
    Https是怎么实现的,怎么建立连接的
    Http2有哪些新的东西
    携程的数据库是怎么做监控的,读写性能、数据库死活等等
    CMDB
    工作几年里遇到过哪些难题,我是怎么解决的?
    ‌我有哪些亮点,特别擅长精通的领域?
    ‌正则表达式
    MySQL慢查询怎么去优化,服务变慢了怎么去排查的,举一两个例子
    ‌申请DB是怎么部署到集群,具体都做了哪些事情
    ‌业务量大了之后分库分表是怎么去分的,怎么去不停机扩容
    ‌session的实现原理
    ‌cors怎么处理跨域问题
    ‌tcp三次握手四次挥手
    ‌Python装饰器
    ‌快速排序,归并排序
    ‌B+树如何实现索引的,联合索引
    ‌如何优化索引
    ‌Peewee等ORM框架的懒执行
    ‌Django框架的middleware
    ‌Rabbitmq常见面试题
    ‌怎么排查慢查询
    ‌事务隔离级别
    ‌docker常见够用教程
    ‌知乎上头条面经面试题
    ‌长链转短链面试题全面剖析
    ‌常见系统设计题
    rabbitmq是怎么保证消息被成功接收的
    限流,熔断和降级分别是什么意思
    数据库的几种范式
    常见的外键约束
    Python3的asyncio的事件循环eventloop的原理,Select,Poll,Epoll等等
    怎么优化复制延迟的
    B树,B+树和红黑树的区别
    资产,角色是怎么管理的
    携程在用哪些消息中间件
    关系型数据库,非关系型数据库和NewSQL的区别和适用场景
    Java里的hashmap底层实现的数据结构
    ‌Java的内存泄露,垃圾回收的是内存的哪一块
    ‌TCP和UDP协议的区别,TCP有哪些机制来保证可靠传输
    ‌操作系统得内核空间和用户空间是怎么划分的
    ‌快速排序的时间复杂度,最差的情况是啥样的
    ‌一亿个数里取前100个最大的数,时间复杂度
    ‌Java里的乐观锁悲观锁
    ‌设计模式里的代理
    ‌时间复杂度和空间复杂度
    ‌数据库连接池的实现原理
    Innodb和MyIsam存储引擎本质上的区别,索引的走向
    Redis相关比较深入的问题
    RabbitMQ,Kafka等消息队列比较深入的问题
    并发编程里,控制并发访问Hashmap加锁有什么问题,除此之外还有什么更好的解决方法
    时间复杂度,斐波那契数列递归实现的时间复杂度,有没有线性复杂度的实现
    日常使用的开源软件的源码有哪些研究
    ‌Java编译器和Python解释器转换到字节码和机器码的细节区别
    ‌做得比较好的项目介绍
    ‌对Spring的深入了解
    ‌在日常工作中遇到过哪些问题,然后是怎么研读源码解决的
    ‌对分布式系统的了解,跨数据中心的延迟多大,怎么应对
    ‌分库分表是怎么随着业务量需求的增大来进行拆分的
    
  4. 很显然,上面这些问题并不难,只要好好用心准备+平时多看几本技术书+多研读常用组件的源码,再把算法题刷一刷,这些面试绝大部分都可以拿下

  5. 后来一个周六,在去参加阿里巴巴中间件团队组织的Dubbo开源大会结束的那天下午,无意中面试了我司“通群科技”,刚起步做工业互联网的创业公司,面试过程虽然未涉及什么技术问题,但感觉还不错,几个老板也都很有诚意,遂决定加入进来,一起奋斗下去。那天听完Dubbo的几个演讲,还想业余时间做以下事情:
    ‌学习查看Apache Druid的架构源码,来提供Influxdb的集群方案,优化方案
    ‌Zookeeper的学习应用
    ‌参加dubbo-go项目的开发
    ‌网关是用来做什么的,系统地学习一下+Nginx
    
  6. 九月中要离开携程数据库团队时,公司IT部门在推全球化DRC方案(多master,多数据中心),需要分割流量(比如按UID进行分割),确保数据同步时不冲突。感觉这也是目前大公司的技术趋势,值得关注。还有分布式数据库的方案,例如TiDB,精读TiDB设计文档和源码,了解底层机制的话,未来也不愁没饭吃。

  7. (小插曲)SAP也在我司目前所在的浦东软件园,之前和他们那一个搞Kubernetes源码研发的Boss聊了聊,也好有兴趣去他们那儿捣鼓Kubernetes源码级的事情,而且他们年假有20天,如果能拿个年薪40万+,还不用加班的话,那也是一份美差了,这是他们当时的JD:
    研发基于Kubernetes的CI/CD Pipeline,更好的为应用开发团队服务
    对接AWS/GCP云接口,为应用开发团队提供数据库、缓存、云存储等服务
    保障以Kubernetes为核心的基础设施平台高可用性,及时修复问题
    与应用开发团队成员合作,整体联调系统
    给应用开发团队传授原生云技术
    此职位要求的技能包括但不限于,
    良好的英语阅读及沟通能力
    扎实的计算机基础,比如数据结构和算法
    熟悉Kubernetes及其周边功能,并能对其二次开发
    熟悉Golang
    熟悉CI/CD
    对微服务有深入认识和理解,如stateless,HA,resilience,service discovery,scalibility,security等
    熟悉Linux开发环境
    熟悉AWS/GCP优先
    熟悉Kubernetes Operator模式优先
    

提高能力,控制欲望。利用欲望让自己努力,控制欲望让自己快乐。 –TK

不惧辛苦,沉心静气,远离安逸! –HYW

Join Newsletter
Get the latest news right in your inbox. We never spam!
波斯王子
Written by 波斯王子 Follow
去读书吧,发现不一样的世界!😉