个人背景

农业末流211,学校的强专业在农学那边,计算机专业很弱,Java自学快满一年

拼多多

时间线

  • 3.22 在牛客里找了一个拼多多的内推人,投递简历。
  • 4.7 在线笔试,好像4道a出2道半
  • 4.13 通知进入面试环节,填写应聘登记表
  • 4.15 一面
  • 4.20 二面
  • 4.23 三面主管面
  • 4.29 HR面
  • 5.10 应聘信息确认(感觉offer马上到)
  • 5.12 OFFER LETTER(有5天的意向确认时间)

4.15一面50min

感觉挺难,面试官全程严肃还时不时叹气(弄得我很慌 😂 😂 😂)。。。

自我介绍

简单介绍项目,怎么做的,为什么要做这个,用到了什么技术。

乐观锁、悲观锁、举例讲讲,CAS

异步同步、阻塞非阻塞,他们之间有联系吗,说说区别,再从内核的角度说说看(私下查了资料答错了)

synchronized,放在各个地方锁的是啥,一个synchronized静态方法,一个普通的synchronized方法,访问静态方法后还能访问普通方法吗,锁的对象是一样的吗。

synchronized的底层实现,知道多少说多少,和ReentrantLock的区别

Redis单线程为什么这么快(之前美团问过,但是还是有点记不清。。。)

。。。还有很多底层的问题记不起来了,一面问的都很底层基础。

最后一道算法题是二叉树方面的做了好久。。。

求一个二叉树里的2个节点的距离,二叉树每个节点的值是唯一的。

当时写的是用递归的先序遍历方式去写,面试官说往这个方向想是对的,就继续卡了挺久,面试官提醒说可以吧走过的路径记录下来,

提醒到这差不多有思路了,就用栈去记录遍历的节点,还是递归先序遍历,当遍历到2个节点中的一个时当前的 栈轨迹就是那个节点的路径(从根节点开始算起的),最后比较这2个栈轨迹就行,类似最近公共祖先,比如找节点4和5的距离如果得出是[1,2,3,4]和[1,2,5] 那他们的距离就是3,及4->3->2->5.

4.20 二面50min

一度以为一面能过的概率不大,结果过了还是比较惊喜。

二面面试官特别和善,心情很好,上来就活跃气氛,说我这里天气很好啊,在寝室吗。。。

自我介绍

问项目,问具体实现,怎么使用Redis的,myqsql有优化过吗,说说过程,登录流程,拦截器,jwt,2级缓存,部署,docker,git,

都是简单的聊,没有深入,这些技术是怎么开始去学的,碰到问题怎么解决的。

问了个ConcurrentHashMap

问了项目的实际使用情况,一个在商用一个没落地

问什么时候可以实习,能实习多久(我还以为结束了。。。)

继续问了几个底层:讲讲volatile,JMM,垃圾回收过程,字节码角度解释return i++,mysql的事务原理;

为什么喜欢java,怎么开始学的(感觉面试官特喜欢java)

算法题,面试官吧函数啥的都码好了,例子也给我写了( 🤣,码子速度惊人)

一个字符串,找是否存在一对AB-BA或者一对BA-AB, 重复的不算

直接遍历一遍吧AB和BA出现的数量记录下来,根据他们出现的次数分类讨论

(算法是可行的,复杂度O(n),面试后发现有更好的方法,双指针2端往中间扫描(左边有AB则右边就找BA这种思路))

4.23主管面30min

面试官看着就像大佬( 🤐)

问项目,项目里哪里可以优化,第一个项目如果落地了,如何保证高可用,数据库主从,后端服务多开几个,怎么保证

前台访问的接口一定能找到后端服务,用一个网关,怎么保证网关高可用,。。。(不清楚了,下来想了下,nginx+keepalive就可以

当时咋就想不起来泥。),引入了Redis,Redis挂了怎么办,系统还能正常运行但是很慢,所有Redis异常都被捕获了,最终都会查询数据库,当时候人工维护。

怎么部署https的。https的加密流程。

最近在看什么书,推荐下,并发编程的艺术,学到了什么,里面很多思想都和操作系统的联系起来了与学校的纯理论课相比更加形象(实践起来了那种,比如阻塞队列,cas,管程)

什么时候可以实习,有什么想问的

什么技术栈:dubbo,没学过,面试官说SpringCloud那一套也可以,消息队列是自研的,去学RabbitMQ就行,缓存用的C++,

实习有新项目吗,看部门,有的有,有点就维护老项目就行。

4.29HR面20min

pdd HR小姐姐,声音很好听,很年轻(不知道是不是也是实习生),期待薪资,项目(说功能就行),怎么学的,家庭情况,学业情况,等通知,一周能

5.12

base上海,是我向往的996作息,工资也给到了期待的最右区间,包吃,有转正,总的面试体验都很不错

 

字节跳动

时间线

  • 5.11 上午一面50min
  • 5.11 下午二面40min
  • 5.13 HR面10min
  • 5.14 offer 

找的内推,没有笔试(之前投的笔试挂了)

内推人很给力 5.11投的,当天就安排了一面时间。

5.11 上午一面50min

面试官很年轻,问的都很基础底层

自我介绍

项目说了一点点,面试官说他们是c++/go方向的,我是java到时候可能要转c++(我说我就是从c++基础转去学java的)

InnoDB的页机制

ACID,事务如何实现,redolog很大怎么办

Redis的数据结构,各个使用场景,过期淘汰策略

进程线程的区别,进程的切换过程

虚拟内存,为什么要有虚拟内存,进程的虚拟内存联系起来 (盲区。。。)

HasnMap和ConcurrentHashMap的区别

红黑树有了解吗,聊聊b树和b+树,b树和二叉树比较下优缺点

内存可见性(我当时回答大致说每个线程对应一个cpu,每个cpu有自己的cache,cache和主存之间通过总线缓存协议维持一致性,不知道对不对)

还有几个简单的基础底层

算法题:将一个句子的每个单词原地翻转,不难,但是面试官看着我一行一行敲完,敲完就把我的错误全部指出一遍跑通(堪比调试器 🤣这面试官以前莫不也是java的)

提问,问完当场说下午安排2面。

(算法还好,运气好不难,面试官把控的很好,很多学过的操作系统那些都快忘了也会去引导你慢慢想起来)

5.11 下午二面40min

面试官全程半站着,可能坐着累了。

自我介绍,当我说到java时直接打断,说他们是go和c++,然后继续面试。。。

做道题吧!

算法:一个数组,有重复的数字,找3个和为0的数。

当时做了很久,调了很久,面试官也帮着找问题,用的比较麻烦的办法,最后还是没调通,下来自己找到问题了调通了( 😐一做算法就紧张),O(n^2),下来看了可以用双指针就很简单也是O(n^2)

聊项目,聊了几个简单业务

面试官:随便问了哈( 🙃裂)。。。

tcp,udp,老八股

消息队列用过吗,RabbitMQ,为什么用它(面试官表示它以前很常用)

k-v存储用过什么,Redis,过期机制,rehash是什么,Redis的虚拟节点(这个不知道,下来也没查到,有知道的写评论区可以吗谢谢泥 😅)

数据库的主从原理,具体是怎么监听binlog日志的

能实习多久,什么时候可以来。这2天等hr通知。

5.13 HR面10min

hr是一个大四学姐,也是实习生,长得很漂亮甜静的那种一笑就两大虎牙,室友蹲我旁边全程盯着看。。。

学姐全程时不时忍不住笑( 😂我全程都很严肃认真),问平时表现,自己的优缺点,喜欢团队开发吗,生活中有遇到什么问题怎么解决的(学姐不要太官方,面后想想她为什么忍不住笑,可能她也  实习没多久吧,不会是对着白纸调问题吧 ,之后微信聊天:我还是很专业的嘛,咋听着这么不靠谱泥 🤣))

等结果(学姐说说offer审批)

5.14 offer  业务负责人说要转语言准备转go

和HR学姐聊了几小时,决定去字节了,多多也很可以,被HR姐姐说服了

有想要我的学习路线的朋友们,可以“一键三连”支持一下,我把我之前从师兄哪里拿到的学习路线以及一份面试题解析合集,放到最后了!

这一份 4500 多页的《Java 面试诛仙手册》,手册包含了:Dubbo.Git.GitHub.IDEA.IDEA 插件.Java.Linux.Maven.MyBatis.Nginx.RESTful.Redis.sQL.Spring Boot.Spring Cloud.Spring 全家桶.Zookeeper.分布式.前后端分离.架构.设计模式.面试.等内容!

 

下载地址戳这里

直接展示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

获取方式

直接“一键三连”后“查看下图”即可无偿获取到这份资料以及学习路线了!