私に友人が、時々からの質問に直面する記事の最初の外観は、メーカー、Androidのアーキテクチャの技術的な知識や分析やその他のコンテンツだけでなく、学習PDF +アンドロイド+インタビューノートソースドキュメント+アドバンスドビデオ+フラッター+ Kotlinなど共有を公開します。
:よりも私のGitHubのリンクを参照することができ、それが点灯している方法によってああ、星を見て、https://github.com/Meng997998/AndroidJXを
序文
2019年はすぐに終わったが、また年に、後に、終了するのに良い時期、金と銀3 4、多くの小さなパートナーは、配列フラッタを回すためにこの機会を利用したいと考えています。
「オールド・徐は、あなたには、限り、あなたは言葉を言うように、私は少し後であなたを送った?私の妻をしたいです。」
ハハ、間違って、古い約束、あなたは今、それが少し送ら与える、フラッターインタビュー情報にしたくありません
大手企業の採用ニーズを見てみましょう
まず、各企業の採用ニーズに見てみましょうが、すべての後、面接の質問の一部でしかありません。
より美しいAPP - フラッター開発エンジニアの給与20-40K・14
責任
- 使用フラッタBEは、SDKアプリケーション開発をaiを、独立して仕事にiOS版、Androidのアプリケーション開発を完了すること。
- 技術的な実装、アプリケーションを議論し、システム統合を実行し、アルゴリズムエンジニア。
- 関連するAPIおよびサードパーティ製のフレームワークに精通フラッター。
- 継続的な製品開発プロセスの改善と最適化は、開発能力と効率を向上させ、そして技術とユーザビリティを介してユーザの利便性を高めます。
- AR関連の事業開発
必要条件
- フラッターは、モバイルエンドクロスプラットフォーム開発を使用することができます。
- iOS版やAndroidのネイティブ開発に泊まっが好ましいです。
- フラッター実際のプロジェクト経験があり好ましいです。
-
⼀優先の馴染みのARのSDK(ARKit、Arcoreの、Vuforia、等)
-
- *
グリッド・ステップ・テクノロジー - フラッター開発エンジニア20-30K
職務記述書
- フラッター様々なUIコンポーネントおよびUI開発、Java言語に精通し、プログラミング言語に精通しているとは、ある程度の知識を持っています。
- Androidの2年以上のAndroid SDKに精通開発経験は、コンポーネント指向プログラミング、Androidのアプリケーションとは独立して開発における優れた経験を持っています。
- 共通のユニットテストフレームは、コードの品質を確保するために、抽象化およびカプセル化の鋭い感覚を有する、能力試験コード書き込み手段に精通。
- このようReactNativeなどのiOS、WebフロントエンドまたはバックエンドのWeb体験が好ましいがありますが、よく知られたオープンソースの優先順位の作品があります。
- 従来の使い慣れたコードバージョン制御プラットフォームのgitのGithub、Gitlabに基づいて操作コマンドを使用して一般に馴染みのGitの、等。
- 優れた分析と問題解決の圧力の下で、新技術のための好奇心に満ち、かつ積極的に素早く学び、製品に適用され、探検。
-
私たちは、仕事の進捗状況を管理しやすくなり良い製品とリスク意識、協力して喜んで正と楽観的、責任、良好なコミュニケーションスキルを持っています。
-
- *
ちょうど2を見て、実際には、募集の書き込みのほとんどは、我々はいくつかの点で似て出てくることができますされています。
- ネイティブ開発を学び、ネイティブ開発の経験を持っています
- 身近フラッターとAPI
- いくつかの開発経験がありましたフラッター
私たちはネイティブ開発のいくつかの知識を学ぶ必要がありますので、ちょうどUIフレームワークのすべてのフラッターた後、いくつかの困難を有することができるフロントエンドWeb開発の学生のための最初のポイント。
実際の三点目は、我々はいくつかのデモプロジェクトを書いたことも可能であり、何も言うことはありません。
ここで例えば、それは、この記事の私たちの第二の点の焦点です。
関連のフェイス質問
フラッターAndroidと実際の面接はほとんどルーチンですが、また二つの部分にインタビュー:
- ダーツ
- ときめきます
結局のところ、フラッターへの書き込みにダーツを使用し、それはまた、ダートの関連知識のいくつかを認識する必要があります。
ダート関連のインタビューの質問
間で1ダート「..」それは何を意味するのでしょうか?
「..」手段の構成および使用を容易にするために、 『演算子をカスケード接続』の中でダート。
「..」および「」の違いが呼んでいる「..」これと同等の復帰後、および「」このメソッドが返すから返された値です。
2.ダートスコープ
ダートはない「パブリック」「プライベート」、および他のキーワードではない、デフォルトでは下線付きのパブリック、プライベート変数で_
始まり。
3.ダートはシングルスレッドモデルではないでしょうか?それがどのように動作しますか?
ダートは、シングルスレッドモデルであり、この絵を実行する方法を確認してください。
言葉で「フラッター中国のネットを」引用:
Dart 在单线程中是以消息循环机制来运行的,其中包含两个任务队列,一个是“微任务队列” microtask queue,另一个叫做“事件队列” event queue。
入口函数 main() 执行完后,消息循环机制便启动了。首先会按照先进先出的顺序逐个执行微任务队列中的任务,当所有微任务队列执行完后便开始执行事件队列中的任务,事件任务执行完毕后再去执行微任务,如此循环往复,生生不息。
4. Dart 多任务如何并行的?
刚才也说了,既然 Dart 不存在多线程,那如何进行多任务并行?
Dart 当中提供了一个 类似于新线程,但是不共享内存的独立运行的 worker - isolate。
那他们是如何交互的?
这里引用 flutter入门之dart中的并发编程、异步和事件驱动详解 中的一部分答案:
在dart中,一个Isolate对象其实就是一个isolate执行环境的引用,一般来说我们都是通过当前的isolate去控制其他的isolate完成彼此之间的交互,而当我们想要创建一个新的Isolate可以使用Isolate.spawn方法获取返回的一个新的isolate对象,两个isolate之间使用SendPort相互发送消息,而isolate中也存在了一个与之对应的ReceivePort接受消息用来处理,但是我们需要注意的是,ReceivePort和SendPort在每个isolate都有一对,只有同一个isolate中的ReceivePort才能接受到当前类的SendPort发送的消息并且处理。
5. 说一下 Future?
Future,字面意思「未来」,是用来处理异步的工具。
刚才也说过:
Dart 在单线程中是以消息循环机制来运行的,其中包含两个任务队列,一个是“微任务队列” microtask queue,另一个叫做“事件队列” event queue。
Future 默认情况下其实就是往「事件队列」里插入一个事件,当有空余时间的时候就去执行,当执行完毕后会回调 Future.then(v)
方法。
而我们也可以通过使用 Future.microtask
方法来向 「微任务队列」中插入一个任务,这样就会提高他执行的效率。
因为在 Dart 每一个 isolate 当中,执行优先级为 : Main > MicroTask > EventQueue
6. 说一下 Stream?
Stream 和 Feature 一样,都是用来处理异步的工具。
但是 Stream 和 Feature 不同的地方是 Stream 可以接收多个异步结果,而Feature 只有一个。
Stream 的创建可以使用 Stream.fromFuture
,也可以使用 StreamController
来创建和控制。
还有一个注意点是:普通的 Stream 只可以有一个订阅者,如果想要多订阅的话,要使用 asBroadcastStream()
。
7. 说一下 mixin?
关于什么是 mixin,引用 张风捷特烈 文章中的:
首先mixin是一个定义类的关键字。直译出来是混入,混合的意思 Dart为了支持多重继承,引入了mixin关键字,它最大的特殊处在于:
mixin定义的类不能有构造方法
,这样可以避免继承多个类而产生的父类构造方法冲突
Flutter 相关面试题
1. StatefulWidget 的生命周期
initState()
:Widget 初始化当前 State,在当前方法中是不能获取到 Context 的,如想获取,可以试试Future.delayed()
didChangeDependencies()
:在initState()
后调用,State
对象依赖关系发生变化的时候也会调用。deactivate()
:当State
被暂时从视图树中移除时会调用这个方法,页面切换时也会调用该方法,和Android里的onPause
差不多。dispose()
:Widget 销毁时调用。didUpdateWidget
:Widget 状态发生变化的时候调用。
借用 CoorChice 文章 里的一张图:
2. Flutter 如何与 Android iOS 通信?
Flutter 通过 PlatformChannel
与原生进行交互,其中 PlatformChannel
分为三种:
- BasicMessageChannel:用于传递字符串和半结构化的信息。
- MethodChannel:用于传递方法调用。Flutter主动调用Native的方法,并获取相应的返回值。
- EventChannel:用于数据流(event streams)的通信。
具体可以查看 闲鱼技术:深入理解 Flutter Platform Channel。
3. 什么是 Widgets、RenderObjects 和 Elements?
Widget
仅用于存储渲染所需要的信息。RenderObject
负责管理布局、绘制等操作。Element
才是这颗巨大的控件树上的实体。
具体可以查看 [译] Flutter,什么是 Widgets、RenderObjects 和 Elements?
4. 说一下什么是状态管理,为什么需要它?
首先状态其实是一个概念上的东西,区分全局状态和局部状态。
局部状态比如说一个控件中输入的信息,全局状态比如是登陆后从后台请求回来的 userId。
当全局状态越来越多,多个页面共享一个状态时,我们就需要管理它。
常用的状态管理有:
- ScopedModel
- BLoC
- Redux / FishRedux
- Provider
5. 说一下 BLoC 模式?
詳細については、参照してください。Vadaskiを-フラッター|ステート章の管理--BLoC(C)
全体の一部:
BLOCの構築方法は、完全に非同期ストリームの世界で構成されている反応性プログラミングモードを、使用して適用されます。
6.どのように統一されたエラーページの管理?
我々は、すべてのエラーは、その後の間でフラッターを発生した場合、それが赤であることを知っています。
使用可能なErrorWidget.builder
ウィジェットの[OK]をカスタマイズします。
概要
一時的に、これを書き、自分の知識も深いフラッター&ダートに基づいて、そんなに書き、新しいフォローアップインタビューの質問があり、のような、また私を送るために歓迎されています
私と私のコラムを見ます
プライベートの手紙は、I [アンドリュース]フラッタ学習ビデオを受信します
Androidはまた、私のGitHubのリンクで見ることができます詳細情報:星を見て、https://github.com/Meng997998/AndroidJX、オハイオ州の方法でそれが点灯しています