2024年最全准备了八个月的字节面试,凉了-----(1),大数据开发面试自我介绍

尾声

以薪资待遇为基础,以发展为最终目标,要在高薪资的地方,谋求最好的发展!

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。

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

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

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

main(){
int s = 6;
setValue(s);
print(s); //输出6,而不是7
}

class Test{
int value = 1;
Test(int newValue){
this.value = newValue;
}
}

setValue(int s){
s += 1;
}

你看,这输出的不是6吗,在dart中一切皆为对象,如果是引用传递,那为什么是6啊。

答案是这样的,在 setValue()方法中,参数s实际上和我们初始化int s = 6的s不是一个对象,只是他们现在指的是同一块内存区域,然后在setValue()中调用s += 1的时候,这块内存区域的对象执行+1操作,然后在堆(类比java)中产生了一个新的对象,s再指向这个对象。所以s参数只是把main函数中的s的内存地址复制过去了,就比如java中的:

public class Test {
public static void main(String[] args) {
Test a = new Test();
Test b = a;
b = new Test();
}
}

我们只要记住一点,参数是把内存地址传过去了,如果对这个内存地址上的对象修改,那么其他位置的引用该内存地址的变量值也会修改。千万要记住dart中一切都是对象。

偷偷说一句,我觉得面试官这个地方面试的不好,这种细节问题,如果不是遇到什么bug,业务忙的时候是没时间注意这个的,面试官可以把这两种情况展示下,然后问面试者原因是什么。。然后我就能回答出来了。。哭唧唧。。

2、Widget 和 element 和 RenderObject 之间的关系

首先我详细说下当时的情景,面试官问我 Widget 和 Element 之间是不是一对多的关系,如果是增加一个 Widget 之后,这个关系又是什么。

这部分还是没有很好地答案,现在只是一个猜想,如果添加了一个widget,Element树遍历后面所有的Element看类型是否发生改变,有的话再重建RenderObject。

Element和Widget之间应该还是一对一的关系,因为每个Widget的context都是独一无二的。等想好了再写上去吧。

3、widget树的root节点

还是没能理解面试官的意思。。有能够理解的同学请评论告知我一下。

现在理解了,面试官的意思应该指是runApp()方法中的那个的Widget。我当时也想说的不过忘记这个方法名是啥了。。。

4、mixin extends implement之间的关系

这部分可以参考掘金的小德大佬的文章,高产似那啥。。
Flutter Dart mixins 探究
Flutter Dart语法(1):extends 、 implements 、 with的用法与区别

5、Future和microtask执行顺序

同样参考小德的文章:

  • 深入了解Flutter的isolate(1) ---- 事件循环(event loop)及代码运行顺序
  • 深入了解Flutter的isolate(2) — 创建自己的isolate
  • 深入了解Flutter的isolate(3) — Flutter的thread model(线程模型)
  • 深入了解Flutter的isolate(4) — 使用Compute写isolates

6、dart中…是什么

级联符号 … 可以让你连续操作相同的对象,不单可以连续地调用函数,还可以连续地访问方法,这样做可以避免创建临时变量,从而写出更流畅的代码,流式编程更符合现代编程习惯和编程风格:

main(){
Tree tree = new Tree(1);
tree…test1 = 1…test2 =5;
print(tree.test1);
print(tree.test2);
}

class Tree{
int value;
int test1 = 2;
int test2 = 3;
Tree(int a){
this.value = a;
}
}

8、await for使用

先来一段官方文档

await-for
As every Dart programmer knows, the for-in loop plays well with iterables. Similarly, the await-for loop is designed to play well with streams.
Given a stream, one can loop over its values:
Every time an element is added to the stream, the loop body is run. After each iteration, the function enclosing the loop suspends until the next element is available or the stream is done. Just like await expressions, await-for loops can only appear inside asynchronous functions.

大概意思就是 await for是不断获取stream流中的数据,然后执行循环体中的操作。

Stream stream = new Stream.fromIterable([‘不开心’, ‘面试’, ‘没’, ‘过’]);
main() async{
print(‘上午被开水烫了脚’);
await for(String s in stream){
print(s);
}
print(‘晚上还没吃饭’);
}

输出为

上午被开水烫了脚
不开心
面试


晚上还没吃饭

await for 和 listen的作用很相似,都是获取流中数据然后输出,但是正如await for中的await所示,如果stream没有传递完成,就会一直阻塞在这个位置,上面没吃饭是最后输出的,下面给个listen的实例,一看就懂。

Stream stream = new Stream.fromIterable([‘不开心’, ‘面试’, ‘没’, ‘过’]);
main(){
print(‘上午被开水烫了脚’);
stream.listen((s) { print(s); });
print(‘晚上还没吃饭’);
}

输出为

上午被开水烫了脚
晚上还没吃饭
不开心
面试

所以 await for一般用在直到stream什么时候完成,并且必须等待传递完成之后才能使用,不然就会一直阻塞,造成类似于Android ANR的问题。

总结

其实面试官还是很 nice 的,第一次见到活的大佬。。大佬对 flutter 和 dart 的研究真的很深入,远不是我这种只会调 api 的人可以比拟的。

主要还是我一个半月没使用过flutter了,然后之前问其他大佬要不要准备Flutter,大佬们说不用,以前看的很多东西都忘的差不多了。

哎,还是自己准备不充分,或者开始大佬问我的时候直接回答忘得差不多了,应该就能过了吧。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的Android开发中高级必知必会核心笔记,共计2968页PDF、58w字,囊括Android开发648个知识点,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。

最后

总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。

在这里我分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

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

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

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

,不再深入研究,那么很难做到真正的技术提升。**

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值