虽然已经临近年底,可是仍是萌生要看新机会的想法,主要的缘由是以为在目前的岗位上技术增加遇到的瓶颈,所以想去作一些更有挑战的工做。由于仍然准备继续在深圳工做,所以选定了三家公司,腾讯、字节跳动和 shopee,考虑的岗位方向仍然是后台开发(其余岗位也面不上呀,伤心)。虽然年末跳拿不到年终奖了,可是我以为和本身我的整个职业生涯的发展比起来算不了什么,最好的时机永远是当下。mysql
敲定了方向和目标后就开始系统准备,主要分为如下几个方面来准备。 linux
事先已经看过别人的社招面经知道头条每轮技术面都有算法题,而这一块平时练习的比较少,校招时刷的题也忘记了不少。所以系统复习的时候算法题仍是花了比较多时间的。先是快速刷完了剑指 offer,这个校招时已经刷过两边了,所以如今刷起来会相对快一些。而后就是啃 LeetCode 的题了,LeetCode 的题比较多,想在短短几周内刷完基本是不可能的,所以我主要按照类型去刷,每一个类型刷几道就会比较有感受了。好比链表的题优先考虑递归和双指针来解决,栈和队列的题优先考虑用两个栈或队列来解决,树的题基本都是递归等。不过数组和字符串的题通常比较灵活,这种题只能尽可能多刷了。平时要上班刷题也不方便,我采用的方法就是看题,用手机打开 LeetCode 的网站,看完题目后直接想解决方案,脑子里大概捋一下代码怎么写,能想到的就过,想不出的就看看别人的解法,用这个方法刷起来就很快。用这种方法你可能会担忧面试时题写不完整,其实不用太担忧,由于面试的时候面试官看你写的核心思路是正确的,边界处理是对的基本就过了,面试时间比较有限。 c++
基础这一块主要以快速复习为主,主要是语言(我主要用C++,因此复习C++)、操做系统和网络编程。校招这一块会问题的比较多,社招这一块问的比较少,可是若是这一块打不上来就比较尴尬了。语言就不说了,这一块你们应该都知道会考些什么,校招的时候毕竟都疯狂准备过。操做系统就看内存管理、进程管理和文件系统,通常虚拟内存问的多。网络编程这块就包括 TCP/IP 协议,HTTP协议,网络安全三个方面。TCP/IP主要就是三次握手,四次挥手,TIME_WAIT 的做用等这些常考的题了。HTTP 协议考察 HTTP 协议的返回码、HTTP 的方法等。须要特别指出的是 HTTPS 加密的详细过程要很是透彻,否则容易产生一种感受好像都清楚了,可是一问就有点说不清楚。最后就是网络安全,主要考察也是 WEB 安全,包括XSS,CSRF,SQL注入等。 面试
这里的后端技术主要指工做中要用到的一些基础组件,一些常见的后端架构设计。主要准备了MySQL、Redis、消息队列、zookeeper、分布式系统架构设计和docker。MySQL 主要看了极客时间的 《MySQL 45讲》,关于事务、索引、锁以及 binlog 和 redolog 都讲的很是好,也是面试最爱考的,除此以外对数据库的读写分离、分库分表也要掌握。没有任何利益相关,决不是打广告。Redis 主要看了《Redis 的设计与实现》,而后本身再总结了一下 Redis 的使用场景,以及 Redis 实现分布式锁基本 Redis 就没有问题了。消息队列的开源软件比较多,我主要选择 Kafka 来学习,主要看官网文档,极客时间的《Kafka 核心技术与实战》,和一些技术文章等。不过极客时间的《Kafka 核心技术与实战》,我以为讲的比较通常,不是很建议。分布式系统的就准备CAP理论、BASE理论、限流、熔断、一致性选举算法、主从架构、集群架构、异地多活、负载均衡、分层架构、微服务等。 redis
没有参与开源项目的经验,工做中作的项目也很通常,项目这块我实在没什么太多拿的出手的,不过仍是要挖掘一下,毕竟这一块是逃不掉。我说几个我思考的点吧: 算法
二面没什么好说的,和面试聊人生去了,我觉得是要凉的节奏,可是却拿到了offer。 sql
HR 面 docker
腾讯面试提早1天和提早一个小时都会发短信提示。去的腾讯滨海大厦面试,大楼的现代化程度很高,不过须要提醒一下的是,腾讯的滨海大厦分为南塔和北塔。我去的时候就上错楼了,须要下到4楼从新换成电梯。 数据库
笔试 编程
面试
腾讯二面面完我就知道凉了。动态规划非要写出递推公式,由于我一直都是用动态规划表的思路来解题,因此这个地方没有答好。后面又问贝叶斯和分词算法,一点都不会(个人心里:我是来面后台的,又不是面算法的)。最后一道算法题只能想出 O(N) 复杂度的,面试官必定要小于 O(N) 的,答不上来。这道题是 leetcode hard 级别的难度,因此没有刷。不事后面去看可能也没有那么难,只是这种经过数学公式的特色来解题每每容易被忽略了。总之,腾讯的一面算是中规中矩,二面确实让我有点手足无措。以前看网上的说法是腾讯算法题考的比较少,可能仍是要分部门吧,我此次面试的是腾讯视频,二面基本上全是考算法。还有大部分面经都说,算法题不多考 leetcode hard 级别,这个我也要表示怀疑了,由于腾讯和后面的头条都考了 hard 级别的。因此刷题时不能彻底跳过 hard 级别的题。那有什么题不会考呢?我认为是描述起来很复杂的题面试时不会考,由于面试时间比较紧,若是光时把题看懂都要解释半天的,这种是不太会考的,好比那个 LeetCode 上买股票的题。
HR 面
头条4轮面试都是视频面的,视频面试体验其实仍是挺好的,坐在家里面试我会更加放松一些,这样脑子也灵活一些。人一紧张脑子就转不动了。头条的3轮技术面都问了zset的实现,ZSET的实现能够好好看看源码怎么实现,这样说的时候有更多东西能够说,不是说一个跳跃表就完事了。还有一点就是遇到不会的逻辑题或者算法题不要放弃,问问面试官可不能够提示一下。若是能在面试官的慢慢提示下能完成这道题,也是会被承认的。
BLOG地址:www.liangsonghua.me
关注微信公众号:松花皮蛋的黑板报,获取更多精彩!
公众号介绍:分享在京东工做的技术感悟,还有JAVA技术和业内最佳实践,大部分都是务实的、能看懂的、可复现的