面试阿里三轮凉凉,后4面终拿下字节跳动offer(Android研发)

159 篇文章 3 订阅
106 篇文章 0 订阅

文字内容太长,请耐心看完,或许对迷茫的你有所帮助,文章重点在后半部分。

前言

二十岁的年纪,青春张扬,无拘无束,这种状态自然是好事,不过在某种意义上,也并不能太过乐观。实际上,许多二十岁左右的年轻人,容易陷入误区,把无所事事当成自然状态,太过随意的生活容易让我们没有明确的人生目标和真实的人生理想,以至于毕业之后找不到工作,回家啃老,然后还要悻悻地安慰自己“谁的青春不迷茫”?

二十岁想要不惑,就要尽早开始规划自己接下来的人生,这样才能提升自己走“狗屎运”的概率。


二十岁的人生,怎么才能做到不惑?

很多人啃了几本青春文学,就喜欢把“谁的青春不迷茫”挂在嘴边,但是试问自己看看,是真迷茫,还是你自己没有想过未来,没有规划过人生?

因为任何难点,都有突破口。你没有能力,可以通过学习来改变自己;你没有颜值,可以靠化妆来美化自己;你没有财力,可以节约,钱是可以攒出来的,少吃一顿外卖,多自己动手做饭,节省开销的同时能学到一门技能。二十岁对于你来说,可能工作不稳定,可能工资不理想,但是生活是你自己经营的,是好是坏,都取决于你自己的状态。


Android程序员,如何做到不惑?(我是怎么做的?)

1.将时间分成阶段,去阶段性地成长

人生很长,我们擅长把自己的人生分成几个重要的阶段,如幼时、少年、青年、中年到老年,每个阶段我们要扮演的角色都不同,要做的事情也不同,那么为何不将这几个阶段继续进行拆分来进行规划呢?

在大学期间,是最好规划自己的阶段,大一是我们开始认识新事物的阶段,大二是我们要确定人生目标方向的阶段,大三是我们朝目标努力冲刺的阶段,大四是迎来下来一个抉择的阶段。因此,在什么阶段就要做什么事,让自己去阶段性地成长。

那么我在大学期间是如何规划自己的?

  • 大一期间:大一跟很多同学一样,对一切事物都是新鲜的,基本上没有太多的规划,不过参与的活动确实很多,学生会、社团等等,认识了很多学长学姐。
  • 大二期间:大二就开始逐渐意识到学习的重要性,开始着手规划了起来,跟着学校老师认真学,知道了打好基础的重要性。
  • 大三期间:到了大三,基本上就算是一只脚迈出社会上的人了,准备着要找实习工作,这个阶段是非常关键的,不仅要去了解行业内的知识,也要快速提升自己岗位要求的技术水平了。
  • 大四期间:这个时间段就更不用多说了,开始规划自己的之后的发展,因为我没有考研打算,所以就已经要画出自己清晰的职业生涯蓝图,既然选择了Android方向,那么如何成为Android开发高级人员,甚至架构师,才是我之后要去考虑和进行的。

2.确定好方向,梳理成长路线图

不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。

关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。


踩“狗屎运”了,4面竟拿下了字节跳动offer

大三下学期找了一家互联网公司实习,大四的时候就已经在开始规划毕业后的打算了,关于校招也在着手准备中,当然目标要放高一些,所以阿里、腾讯这些自然要尝试。最终的结果去了字节跳动,这个面试过程是比较险的,因为我的目标是阿里,所以框架类的东西准备得多一点,算法基本上没太看,却没想到还真是走了“狗屎运”。

字节跳动一面:

  • 简单介绍简历写的秒杀系统

  • 浏览器返回网页全过程发生了些什么(尽量详细)、DNS采用什么协议(UDP)

  • tcp、udp区别,udp使用场景、tcp为什么是可靠的(错误校验、字节的顺序、丢失重传)

  • tcp的三次握手,里面涉及到的seq、ack具体代表什么(字节的编号)

  • get post区别,post默认总是不幂等的吗

  • 说一些http状态码(1开头是临时消息,比如100continue)

  • 线程间通信的方式、volatile有原子性吗?说一说他的可见性有序性、指令重排

  • Syschronized关键字怎么使用,分别锁了什么,Syschronized锁的原理

  • HashMap扩容原理,put采用头插还是尾插

  • 手撕 回文输出二维数组

字节跳动二面:

  • mysql的索引原理说一说,用过哪些类型的索引?

  • spring的ioc和aop

  • 讲一讲内存泄漏、垃圾回收,为什么会出现有的对象回收不了的情况?内存泄漏了怎么解决?

  • 怎么判断一个对象能否被回收、GC根

  • 线程死锁怎么出现的

  • wait()和sleep()的区别

  • 线程池有哪几种,区别是什么

  • task进入线程池的处理流程

  • 手撕 线程安全的懒汉式单例模式,写了DCL之后问:这个volatile的作用是干嘛的?这个synchronized如果直接加在方法名前会有什么问题?

  • 手撕 输出无序数组中前k大的k个数字,堆排序需要自己手写**

字节跳动三面:

  • java做过什么项目?秒杀系统照着网上的课程做的吗?

  • 聊考研的选择

  • 手撕 有正有负的递增序列中找到绝对值最小的数字

  • 评价一下自己,自认为适合做哪些工作?不适合哪些工作?

  • 平时用什么app?谈谈抖音和B站的区别

  • 用户用app最可能在乎哪些点?视频加载慢怎么解决?

  • 从设计的角度或者客户端、代码设计的角度讲讲能对这些app做什么?

  • 个人职业规划

  • 64匹马,8条赛道,找到跑的最快的5匹马,怎么做可以让比赛的次数最少

  • jvm的内存结构,他们分别都是用来干什么的

  • OOM是什么,怎么会造成OOM

  • 说几个常见的Exception

HR面:

  • 聊我的实习经历

  • 问了一下技术规划

  • 还投了哪些公司?

  • 对字节跳动了解多少?用过字节的什么产品?如何评价?

  • 说说你在项目中最大的收获


幸运只给有准备的人,“狗屎运”并不是真狗屎

虽然自嘲自己走了狗屎运,但是我永远都明白一个道理:幸运永远只会留给有准备的人,机会来了,你得有能力才能抓住

因此,在面试这些一线互联网公司之前,我早就开始做准备工作了,包括学习新的技术,提升自己的技术水平,甚至刷面试题,看面试帖,这些都对我的面试起到了极大的帮助,关于面试的准备,我主要是做了以下几个方面:

以下内容涉及到很多资料(Android学习PDF+架构视频+面试文档+源码笔记),有需要的:点这里自行获取

(1)通过视频来系统性地学习

大学学得内容广,但是泛,不够系统不够深入,所以只能够通过业余时间来“补课”。我的方式是自己搜罗整理了一套Android的学习视频,从零开始学起,全部视频看完之后,基本上有一个非常清晰的思路和框架结构了。

(2)阅读前辈的一些技术笔记

这些笔记是找学长和论坛上的技术牛讨来了,翻阅了不少,确实对很多技术点的认识有所帮助,学习到了不少的思路。

(3)刷题备战,直通大厂

刷题是为了了解现在的大厂面试时会问到什么,另外也能够提升自己对技术的记忆点,使得在面试时更有底气。实际上,刷题时我们灵活一点,学会举一反三,在真正面试时还是能够起到一定作用的。


总结

爱默生说:一个朝着自己目标前进的人,整个世界都给他让路。所以,作为二十岁的你,不惑很简单,多思考多规划,未来会更清晰,朝着自己的目标一步一步走下去,尽早地取得成功。毕竟,年龄在程序员界里,也是一种优势。

如果,你没有靠山,就让自己成为自己最稳的靠山吧!

以上文章中的资料,均可以免费分享给大家来学习,无论你是零基础还是工作多年,现在开始就不会晚。
——点这里自行获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值