上一篇 我在华为OD的275天 最后说,要讲讲自己为什么会坚持在年底离职,以及离开后去了哪儿。趁周末,鸽王本鸽来交下作业

1 - 为什么要在年底离职

1.1 惊觉:没有什么成长

20年11月初的一天,在同事们讨论“又有某某某被其他公司高薪挖去了,钱景无限”的消息,我忽然惊觉,自己来到华为半年多,除了熟悉内部的系统和流程,好像没有什么成长和进步?

只有大佬才会被挖,停止成长、进步缓慢的我,现在这个状态,值几个钱?

1.2 投简历,敲打自己

意识到自己应该抓紧时间学习提升,刚好也想起了之前的一个同事,在离职的聚会上分享的经验:

技术人不能闭门造车,要多交流,多看看外面的动态。

如果感觉自己太安逸了,那就把简历挂出去,去了解其他公司用的是什么技术,他们更关注哪些痛点?面几次你就有方向了。

为了鞭策自己(让面试官的狂虐来刺激自己),更好地制定学习方向,我重新下载了某聘软件,在首页推荐里投了几家公司。

1.3 面试它来了

11月10号(星期二)投的简历,当天就有2家预约了11号下午的线上面试。(对,其中就有鹅厂)

好巧不巧,10号晚上要双十一保障,一直到第二天凌晨2点半才下班。

熬夜太伤身,还好能申请调休一天,也省去了找借口请假


这段时间总共面了3家:

一家广州的公司11号当晚就完成了2轮线上面试,开得有点低,而我从深圳返回广州的成本有点高,就婉拒了;

第二家就是本文的重点——鹅厂;

第三个是做跨境电商的公司,一面就跪(恭喜它荣升为“我有限的工作经历中,面试体验最差的2家公司之一”)

1.4 提前触到目标?

一直有一个大厂梦,奈何菜鸟一枚,之前试过好几次,都跪在技术面了。

所以想了个曲线救国的方法:先在其他单位积累着,有机会了再争取大厂的机会

很幸运,也很猝不及防,这次竟然通过了鹅厂的所有面试。

虽然已到年底,但是要是错过这么难得的机会,下次就不知道什么时候才能再通关了。

所以,年底离职 vs 鹅厂 Offer,我选择了后者

2 - 我的鹅厂面试

如本文标题所说,16天的时间,我经历了五轮面试,在第17天,如愿收到了渴盼已久的 Offer。

做技术的同学,可能会对鹅厂的面试很好奇,他们都会问哪些问题呢?

本人主要编程语言是 Java,应聘的是大数据开发岗位,这里对我经历过的通用问题做个梳理,也给想来鹅厂的同学们一个参考

几乎所有问题都能在网络上找到很详细的答案,鉴于篇幅有限,这里只列举题目和一些引申的问题。

2.1 技术一面

Java 语言相关

1、对 Java 的类加载器有没有了解?如何自定义类加载器?

引申:一个类能被加载多次吗?java/javax 包下的类会被加载多次吗?

2、Java 中要怎么创建一个对象?

3、对多线程有了解吗?在什么场景下需要使用多线程?

引申:对 线程安全 的认识;对线程池的了解,以及各个线程池的适用场景。

4、对垃圾回收的了解?

5、对 JVM 分代的了解?

6、NIO 的了解?用过 RandomAccessFile 吗?

引申:对 同步、异步,阻塞、非阻塞 的理解?

多路复用 IO 的优势?

7、ArrayList 和 LinkedList 的区别?各自的适用场景?

8、实现一个 Hash 集合,需要考虑哪些因素?

引申:JDK 对 HashMap 的设计关键点,比如初识容量,扩所容,链表转红黑树,以及 JDK 7 和 JDK 8 的区别等等。

通用学科相关

1、TCP 的三次握手;

2、Linux 的常用命令,比如:

ps aux / ps -ef、top C
df -h、du -sh *、free -g
vmstat、mpstat、iostat、netstat

项目框架相关

1、Kafka 和其他 MQ 的区别?它的吞吐量为什么高?

消费者主动 pull 数据,目的是:控制消费节奏,还可以重复消费;

吞吐量高:各 partition 顺序写 IO,批量刷新到磁盘(OS 的 pageCache 负责刷盘,Kafka 不用管),比随机 IO 快;读取数据基于 sendfile 的 Zero Copy;批量数据压缩……

2、Hive 和 SparkSQL 的区别?

3、Ranger 的权限模型、权限对象,鉴权过程,策略如何刷新……

问题定位方法

1、ssh 连接失败,如何定位?

是否能 ping 通(DNS是否正确)、对端端口是否开了防火墙、对端服务是否正常……

2、运行 Java 程序的服务器,CPU 使用率达到 100%,如何定位?

ps aux | grep xxxjps 命令找到 Java 的进程号 pid

然后用 top -Hp pid 命令查看其阻塞的线程序号,将其转换为16进制

再通过 jstack pid 命令跟踪此 Java 进程的堆栈,搜索上述转换来的16进制线程号,即可找到对应的线程名及其堆栈信息……

3、Java 程序发生了内存溢出,如何定位?

jmap 工具查看堆栈信息,看 Eden、Old 区的变化……

2.2 技术二面

二面主要是过往项目相关的问题,有少量的基础问题和一面有重复,这里略去不表。

1、Solr 和 Elasticsearch 的区别 / 优劣?

2、对 Elasticsearch 的优化,它的索引过程,选主过程等问题……

3、项目中遇到的难题,如何解决的?

blabla 还有一些大数据相关的内容,记不太清了

2.3 技术三面

这一面是总监面,更多是个人关于职业发展的一些想法,以及在之前公司的成长和收获、对下一份工作的期望等问题。

但也问了几个技术问题。印象比较深的是这道题:

1TB 的大文件,每行都只是1个数字,无重复,8GB 内存,要怎么对这个文件进行排序?

首先想到的是 MapReduce 的思路,拆分小文件,分批排序,最后合并。

此时连环追问来了:

Q:如何尽可能多的利用内存呢?

A:用位图法的思路,对数字按顺序映射。(对映射方法要有基本的了解)

Q:如果在排好序之后,还需要快速查找呢?

A:可以做索引,类似 Redis 的跳表,通过多级索引提高查找速度。

Q:索引查找的还是文件。要如何才能更多地利用内存呢?

A:那就要添加缓存了,把读取过的数字缓存到内存中。

Q:缓存应该满足什么特点呢?

A:应该使用 LRU 型的缓存。

呼。。总算是追问完了这道题


还有 GM 面和 HR 面,问题都和个人经历相关,这里就略去不表。

3 - 文末的絮叨

入职鹅厂已经1月有余。不同的岗位,不同的工作内容,也是不同的挑战。

感受比较深的是,作为程序员,还是要自我驱动,努力提升个人技术能力,横向纵向都要扩充,这样才能走得长远。

对了,最后广告下,有想要加入鹅厂、或者有疑问的同学,可以留言,或关注公众号加我好友,我尽力给你解答

16天5面,我终于拿到了鹅厂Offer的更多相关文章

  1. 鹅场offer已Get,下周签约,终于能静下心来总结总结

    2015年9月20号下午,接到腾讯总部的电话,确定了offer相关信息,算是正式get了鹅场的offer,坐等下个周一周二的签约会. 心路篇 2015年2月:已经2月份了,自己在大学的时光已经来到了比 ...

  2. 记一次前端面试~终于拿到理想中的offer!

    2019年已经过去一半,终于拿到一直想去的公司offer,也算是实现了今年的一个小目标. 由于这家公司是我从去年到现在最想去的公司,本次换工作一直没有投,希望先积累下面试经验再投. 没有想到居然先在b ...

  3. 5面终于拿到了字节跳动offer! 鬼知道我经历了啥...

    坐标北京,某211本科毕业生,之前学校活动有去过字节跳动公司总部参观,所以一直以来就蛮想进入字节工作的,被字节的企业文化和工作氛围所影响.字节作为发展速度最快的互联网公司,旗下的很多产品的用户都比肩B ...

  4. 面试 16:栈的压入压出队列(剑指 Offer 第 22 题)

    我们今天继续来看看周五留下的习题: 面试题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如:压入序列为{1,2,3,4,5},那{ ...

  5. 新鲜出炉!凭借着这份面试宝典,我终于拿下了字节跳动的offer!

    前言 我做Java也十来年了,现在也算是中层管理,每次招聘都需要找一些面试题,干脆自己整理了一份,这份面试宝典是从我 去年开始收集的,一方面是给公司招聘用,另一方面也是想用它,来挖掘自己在 Java ...

  6. 化学专业大二转战Android开发,终于拥有了鹅厂暑期实习offer

    我是双非学校,应用化学专业,一年前我大二,现在我大三.一年前我两手空空,现在我拥有了鹅厂暑期实习的offer. 虽然结果是好的,但我春招实习的道路远没有这么简单和辉煌,它是无比坎坷的:每个人应该量力而 ...

  7. 【Android实习】20场面试斩获大厂offer,我学会了什么

    前言 很高兴遇见你~ 先说一下笔者春招实习的情况:从三月初到四月半,经历了近20场面试,一共面试了五家企业,通过了腾讯.字节.蚂蚁.美团的面试,虎牙在一面之后拒了二面邀请. 金三银四,笔者不是在面试中 ...

  8. 2017 年的 人生 hard 模式终于结束了,2018年回归初心

    2017 年的 人生 hard 模式终于结束了,2018年回归初心 2017年对于我个人来讲, 毫不夸张的说 算是近十年来除了高考那一年,最最惊心动魄的一年了,没有之一. >>>开篇 ...

  9. 2017 年的 人生 hard 模式终于结束了,2018年回归初心(二)

    今天周末, 深圳的天气简直好的不像话.好了,我们继续之前的话题往下聊. >>>猎头 : 关于猎头这个行业,以笔者的感觉来说 一般你工作年限未超过三年的话,你是很难遇到猎头来推送你的简 ...

随机推荐

  1. WDCP v3 安装

    ---已更新至3.0.3---经过近期的努力,wdCP_v3正式版终于可以和大家见面了v3功能预览1 底层完全重新架构,更安全稳定,省资源更高效2 安装更简单,快速与方便3 功能更强大和易扩展,且完美 ...

  2. String--常见面试题

    String s = new String("xyz") 创建了几个对象? 实例分析1 javac编译代码,然后用javap来反编译,执行javap -c Test 从结果来看,l ...

  3. linux脚本错误: line *: [: missing `]',linux编写shell脚本时的注意点

    转载:https://www.cnblogs.com/bovenson/p/4548079.html 关于shell的一些注意点,粘贴自拉钩教育精选评论:测试开发核心技术 46 讲-->第6讲 ...

  4. springboot项目打war包流程

    目前,前后端分离的架构已成主流,因此使用springboot构建应用是非常快速的,项目发布到服务器上的时候,只需要打成一个jar包,然后通过命令 : java -jar jar包名称即可启动服务了:但 ...

  5. 我的程序员之路:自学Java篇

    序章 时光疾驰,从事IT行业已两年有余. 16年11月开始自学Java,从此开启自学之路,后来实习期自学大数据.python.爬虫等,最终成长为一名平凡的程序员.回首望去,一路上的过往历历在目,有初学 ...

  6. Java内存模型与线程(二)线程的实现和线程的调度

    先行先发生原则(happen-before原则) 先行先发生是指Java内存模型中定义的两项操作之间的偏序关系. 如果说A先行于B,其实就是说在发生B操作之前,操作A产生的影响能被操作B观察到,至于这 ...

  7. git文件操作

    git下载地址: https://git-scm.com/download mac 直接使用brew下载brew install git 1Git一般工作流程: 1.在工作目录创建版本库 2.在工作目 ...

  8. 为了加快速度,Redis都做了哪些“变态”设计

    前言 列表对象是 Redis 中 5 种基础数据类型之一,在 Redis 3.2 版本之前,列表对象底层存储结构有两种:linkedlist(双端列表)和 ziplist(压缩列表),而在 Redis ...

  9. docker 数据卷的挂载和使用

    容器之间的数据共享技术, Docker容器产生的数据同步到本地 卷技术 --> 目录挂载, 将容器内的目录挂载到服务器上 使用命令来挂载 -v # 可以挂载多个目录 docker run -it ...

  10. (十九)hashlib模块

    hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 注意:md5和sha25 ...