如果你面试被拒绝了10几次,不要放弃,我3面阿里-6面字节,终逆袭拿下字节跳动offer!

文章记录了一位面试者的经历,涉及生产消费者模型优化、并发与并行概念、不同锁机制、区块链基础、Netty功能、TCP/UDP可靠性、Git操作、Java技术细节、Android知识和面试策略分享。
摘要由CSDN通过智能技术生成

8、生产消费者模型弊端、量级越来越大了之后怎么优化

9、并发与并行的区别

10、悲观锁与乐观锁的区别

11、区块链的概念(因为我的研究方向是区块链,面试官让我一句话介绍区块链并且要让他能听懂)

12、网络netty 实现了什么功能,长连接的原理、底层的代码看过吗(表示真没看过)

13、怎么保证长连接不断开?怎么发现交互失败?

14、手写算法 大数相加

9.17 二面

1、java的字节码是什么

2、我们基于字节码能做什么事情

3、java本身和C的区别

4、java为什么可以一次编译终身运行

5、JAVA是解析型还是编译型语言 和python C有什么区别

6、代码混淆有了解过吗

7、动态链接区和静态链接库的区别

8、TCP协议如何保证可靠传输

9、一个完整的https的整个过程用到来哪些协议

10、怎么改进UDP让他实现可靠传输(好像是可以利用应用层来实现TCP的一些功能,从而达到可靠性,具体可能可以参考一下QUIC)

11、git rebase git merge 的区别

12、为什么想投客户端的岗位

13、算法题:数组的数字合并成最小数 LC179

9.20 三面

1、为什么选择区块链方向、讲一讲自己的项目

3、区块链的理解,有哪些实际落地的场景

4、防篡改不用区块链怎么实现

5、觉得区块链有什么可发展的空间或场景

6、netty的线程模型

7、netty单线程模型怎么处理并发的问题

8、对于客户端开发的理解是什么

9、算法题 LC93

10、编译原理操作系统的理解

11、最近在看什么书

12、有没有阅读开源框架

这次面试,很多东西自己知道,但是表达得不是很清晰。所以在这里大家最好是对着自己的简历,模仿一下,假如你是面试官,会怎么问,你要怎么答才会让他满意,换位思考。

下午去的是车公庙,金融公司。

在这里插入图片描述

中安信业

这家公司,好高大上,办公环境好屌,个个都是穿正装,感觉自己好像一个屌丝。是一个前端架构师和另外一个小伙一块面我的,恩,感觉他们对Android方面不是特别了解

一面

1、自我介绍

2、问项目

3、观察者模式是干嘛的?手写个出来

4、数据库怎么升级版本?

5、view的事件分发机制的理解,出现滑动冲突怎么办?

5、线程T1,T2,T3,T5,T6,怎么按顺序执行?

6、跨进程通信有哪些?AIDL能传对象吗?说一下binder的工作机制?

7、说一下你了解的一些图片开源框架?怎么选择?

8、项目安全方面,你们是怎么做的?

9、还有什么问题想问的?

总共面试了大概一个半小时,然后就回去等通知…他们不是专门做Android的,但是有一个是移动端的架构师,所以问得很底层…

腾讯

腾讯找我,我很意外,因为我并没有投腾讯,也没有约时间,好像突然袭击一样,所以接到腾讯的电话面试时候,还特么逗比的问一句:那个腾讯,是BAT那个腾讯?

(有个公司叫藤讯)

电话面:

1、自我介绍

2、说一下你项目中做了那些?主要负责什么?

3、activity启动模式有哪些?使用场景?

4、string,stringBuffer,stringBuilder区别?

5、wait和sleep区别,怎么使用?线程冲突了怎么办?

6、什么是死锁,怎么产生,产生条件,怎么解决?

7、有A、B、C、D、E这几个线程,有那些方法让他们按顺序执行?区别在哪?使用场景?

8、view的绘制流程

9、网络请求的框架了解过吗?对比一下他们的区别。

10、说说Glide的源码?

一面

1、自我介绍

2、问项目。问到内裤都没有了。

3、view的绘制原理。

4、手写冒泡、插入算法。有什么改进的地方吗?

5、平时遇到什么难题呢?怎么解决,举个例子?

6、线程相关

7、进程保活?

8、hashmap原理,冲突,解决

9、写个算法(题目忘记了)

…然后就没然后了,不过去腾讯面试,收获真的很大,很多不懂的,和大神请教…我感觉腾讯的面试就是一个问题从浅慢慢深入,问到你不懂为止。

在这里插入图片描述

总结+分析

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围,平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!

面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。

尾声

评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。

有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。

一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值