当前位置 博文首页 > m0_46962786的博客:字节面试被刷了三次,还好没放弃,终于等到
##前言
北京字节跳动科技有限公司成立于2012年3月,是最早将人工智能应用于移动互联网场景的科技企业之一。其独立研发的“今日头条”客户端,开创了一种全新的新闻阅读模式。
我一直很向往这样有创新精神,并做出了巨大成果的大公司,而且,除了上面的伟大成绩,字节跳动公司的薪资待遇和福利保障在同行中也都是佼佼者,是不少程序员向往的大厂,我也是。
##被刷三次
从奉命宅家开始,我就一直在准备字节跳动的面试,稍微优化了一下自己的简历,补了下底层基础。
可能就是因为上面的这些准备,让我自己有些过于自信了,以至于第一次连面试电话都没接到的时候蒙了。不过,我这个人脾气比较倔,当时就跟朋友放下狠话,一次不行就两次,两次不行就三次。
可能就是自己乌鸦嘴吧,居然三次都没过。
老人常说一句话:事不过三。虽然这句话的本意不是说这方面的,但是字节跳动公司已经试了三次了,作为一个成年人,要学会舍弃一些不可能的事情,我也是该好好考虑一下要不要继续下去了。
我回头想了一下,这三次虽然都没过,但是,每次结束后我都有好好做总结。
第一次被刷是直接石沉大海,应该是简历上面学历的原因,末流二本的小渣渣,可能就是这样直接被刷了吧,我当初自己做优化时也只是删了一些多余的东西,其他的没怎么变过,想来是我的资历看起来不够吧。
第二次投,过了两面,第三面挂在了性能优化上,回去后我补了一下这个方面的知识,准备三战字节。
这一次准备的时间比较长,因为看的资料比上次多,复习的范围也更广了些,看了一整套差不多58万字的PDF资料,还有视频和面试真题解析,不过最后还是挂了。
##终获offer
后面有朋友提出帮我内推,于是我在慎重的决定后,又投了一次。这一次并不是赌气,因为之前三次面试经验刷得差不多了,我是对自己有一定把握的,没准备多久就直接去面试了。
意料之中的,这次比较顺利,拿到了研发岗的意向书,没有辜负我前面看的资料和刷的题。
这是我第三次面试的面经分享,希望对大家有帮助。
##面经分享
public int getCount(ViewGroup viewGroup){
int count=viewGroup.getChildCount();
//循环获取子View
for(int i=0;i<count;i++){
View child=viewGroup.getChildAt(i);
if(child instanceof ViewGroup){
//如果子View是ViewGroup,则用递归获取子View数量
int childCount = getCount((ViewGroup)child);
count+=childCount;
}else {
count++;
}
}
return count;
}
线程的阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。
主线程Looper从消息队列读取消息,当读完所有消息时,主线程阻塞。子线程往消息队列发送消息,并且往管道文件写数据,主线程即被唤醒,从管道文件读取数据,主线程被唤醒只是为了读取消息,当消息读取完毕,再次睡眠。因此loop的循环并不会对CPU性能有过多的消耗。
a. 四大组件
public static void main(String[] args){
Counter counter=new Counter();
new Thread(new PrintOdd(counter)).start();
new Thread(new PrintEven(counter)).start();
}
static class PrintOdd implements Runnable {
public Counter counter;
public PrintOdd(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
while (counter.value<=100){
synchronized (counter){
if(counter.odd){
System.out.println(Thread.currentThread().getName()+":"+counter.value);
counter.value++;
counter.odd=!counter.odd;
counter.notify();
}
try {
counter.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
static class PrintEven implements Runnable {
public Counter counter;
public PrintEven(Counter counter) {
this.counter = counter;
}
@Override
public void run() {
while (counter.value<=100){
synchronized (counter){
if(!counter.odd){
System.out.println(Thread.currentThread().getName()+":"+counter.value);
counter.value++;
counter.odd = !counter.odd;
counter.notify();
}
try {
counter.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
static class Counter{
public int value = 1;
public boolean odd = true;
}
##最后
其实,面试最重要的是心态。看我,如果中途放弃了就没后面什么事了呀。我只想说:终于等到你,还好没放弃。
这里放上我当初为了准备面试,在网上搜集整理的【14套腾讯、字节跳动、阿里、百度等2020Android面试真题解析,还有视频和PDF】。
网上学习 Android的资料很多,但大都不成体系。如果我们遇到问题时不深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我的GitHub可见:https://github.com/xieyuliang/Note-Android