0

KINH NGHIỆM PHỎNG VẤN FLUTTER

KINH NGHIỆM PHỎNG VẤN FLUTTER

Bài này chúng tôi xin chia sẻ một số kinh nghiệm phỏng vấn Flutter, các kiến thức liên quan chúng tôi đều để link đến bài viết tương ứng.

I. Phỏng vấn Flutter cơ bản

Đối với phần này, bạn cần nắm và hiểu rõ các kiến thức sau:

  1. Ưu điểm của Flutter
  2. Lifecycle của một Widget
  3. Phân biệt StatelessWidgetStatefulWidget
  4. Các widget thông dụng (Container, Text, Column, Row, Stack, GridView, ListView, SingleScrollView…)
  5. Cách quản lý trạng thái (State Management) của app, bạn có thể sử dụng StatefulWidget hoặc Provider, GetX, Bloc
  6. AOT (Ahead-of-Time) và JIT (Just-in-Time)
  7. Null Safety là gì?
  8. Xử lý bất đồng bộ async trong Dart
  9. Các loại tham số trong hàm của flutter?
  10. Cách sử dụng Key trong Flutter
  11. Cách sử dụng Animation
  12. Phân biệt Widgets, RenderObjects and Elements
  13. Giao tiếp với Backend (SQL, Firebase, Websocket, Logging…)
  14. Testing (BDD, TDD, A/B test…)
  15. Package management + Public to store (iOS + Android)
  16. Null safety để làm gì?
  17. Sự khác nhau httpdio như thế nào?
  18. BlocCubit khác nhau như thế nào?
  19. BlocConsumer dùng để làm gì?
  20. Cách cấp quyền truy cập internet, đọc và ghi dữ liệu…

Ngoài ra, khi bạn đi phỏng vấn Flutter, người tuyển dụng sẽ chọn một app có sẵn trong điện thoại, sau đó chọn ngẫu nhiên một màn hình và yêu cầu bạn tạo ra UI của màn hình đó.

II. Phần phỏng vấn Flutter nâng cao

  1. Stream, Isolate, Event Loop, Microtask
  2. Painting Widget
  3. Wrap native lib qua lib Flutter (từ Android hoặc iOS)
  4. Và phần khó nhất của hầu hết mọi dev – Profiling

III. Một số câu hỏi phỏng vấn Flutter thường gặp

#Flutter ra đời như thế nào?

Phiên bản alpha đầu tiên của Flutter đã xuất hiện cách đây gần ba năm – vào tháng 5 năm 2017. Không ai hồi đó nghĩ rằng nó lại trở nên phổ biến trong một khoảng thời gian ngắn như vậy. Nó đã nhận được nhiều “sao” đánh giá trên GitHub hơn đối thủ cạnh tranh lớn nhất của nó là React Native kể từ khi phát hành ổn định vào tháng 12 năm 2018. Nhiều công ty bắt đầu nhận thấy tiềm năng của Flutter và đang tìm kiếm các nhà phát triển sẵn sàng viết ứng dụng.

#Ai đã tạo ra Flutter?

Dart được Google tạo ra vào năm 2011. Đây là một ngôn ngữ lập trình mã nguồn mở, có thể mở rộng, với các thư viện và hiệu suất chạy khá tốt, để xây dựng web, máy chủ và ứng dụng di động. Flutter là một Framework sử dụng ngôn ngữ lập trình Dart để xây dựng các ứng dụng di động.

#Dart là gì?

Dart là một ngôn ngữ lập trình hướng đối tượng, có mục đích chung với cú pháp kiểu C. Nó là mã nguồn mở và được phát triển bởi Google vào năm 2011. Mục đích của lập trình Dart là tạo giao diện người dùng frontend cho web và ứng dụng di động. Nó là một ngôn ngữ quan trọng để tạo ứng dụng Flutter. Ngôn ngữ Dart có thể được biên dịch cả AOT (Ahead-of-Time) và JIT (Just-in-Time).

#Flutter có miễn phí không?

Có. Flutter là miễn phí và mã nguồn mở.

#Ưu điểm của Flutter là gì?

Các ưu điểm phổ biến của Flutter framework như sau:

  • Phát triển đa nền tảng: Tính năng này cho phép Flutter viết code một lần, duy trì và có thể chạy trên các nền tảng khác nhau (mobile, desktop, web…) Nó tiết kiệm thời gian, công sức và tiền bạc của các nhà phát triển.
  • Phát triển nhanh hơn: Hiệu suất của ứng dụng Flutter rất nhanh. Flutter biên dịch ứng dụng bằng cách sử dụng thư viện nhánh C / C ++ giúp ứng dụng gần với code máy hơn và mang lại cho ứng dụng hiệu suất gốc tốt hơn.
  • Cộng đồng tốt: Flutter có hỗ trợ cộng đồng tốt, nơi các nhà phát triển có thể hỏi các vấn đề và nhận được kết quả nhanh chóng.
  • Tải lại trực tiếp và nóng: Nó làm cho quá trình phát triển ứng dụng cực kỳ nhanh chóng. Tính năng này cho phép chúng tôi thay đổi hoặc cập nhật code được phản ánh ngay sau khi các thay đổi được thực hiện.
  • code tối thiểu: Ứng dụng Flutter được phát triển bởi ngôn ngữ lập trình Dart, sử dụng biên dịch JIT và AOT để cải thiện thời gian khởi động tổng thể, hoạt động và tăng tốc hiệu suất. JIT nâng cao hệ thống phát triển và làm mới giao diện người dùng mà không cần nỗ lực thêm vào việc xây dựng hệ thống mới.
  • Tập trung vào giao diện người dùng: Nó có giao diện người dùng tuyệt vời vì nó sử dụng widget tập trung vào thiết kế, các công cụ phát triển cao, API nâng cao và nhiều tính năng khác.
  • Tài liệu: Flutter có hỗ trợ tài liệu rất tốt. Nó được tổ chức và nhiều thông tin hơn. Chúng ta có thể lấy mọi thứ mà chúng ta muốn viết ở một nơi.

#Null Safety là gì?

#Widget trong Flutter là gì?

Một ứng dụng Flutter luôn được coi là một cây các material. Bất cứ khi nào bạn định viết code để xây dựng bất cứ thứ gì trong Flutter, nó sẽ nằm bên trong một widget. Các widget mô tả chế độ xem ứng dụng của bạn trông như thế nào với cấu hình và trạng thái hiện tại của chúng. Khi bạn thực hiện bất kỳ thay đổi nào trong code, widget con sẽ xây dựng lại mô tả của nó bằng cách tính toán sự khác biệt của widget con hiện tại và trước đó để xác định những thay đổi tối thiểu đối với việc hiển thị trong giao diện người dùng của ứng dụng.

Các widget được lồng vào nhau để xây dựng ứng dụng. Nó có nghĩa là thư mục gốc của ứng dụng của bạn tự nó là một widget và tất cả các cách nhìn xuống cũng là một widget. Ví dụ: một widget có thể hiển thị một cái gì đó, có thể xác định thiết kế, có thể xử lý tương tác, v.v.

#Sự khác biệt giữa stateless và stateful widget là gì?

Các stateless widget chúng chỉ được tạo một lần, do đó trong phương thức build cũng chỉ được gọi một lần. Ngược lại stateful widget có thể được rebuild lại khi có giá trị thay đổi.

#Vòng đời của StatefulWidget là gì?

  • createState() – một phương thức trong một phương thức StatefulWidget được gọi ngay lập tức và sẽ trả về một State của các đối tượng widget.
  • initState() – phương thức đầu tiên được gọi trong State widget sau khi widget được tạo.
  • didChangeDependencies() – được gọi ngay sau initState() lần đầu tiên được gọi.
  • build() – rất giống với từ StatelessWidget . Nó được gọi ngay sau đó didChangeDependencies(). Nó được gọi mỗi khi giao diện người dùng cần hiển thị và trả về widget tree.
  • didUpdateWidget() – nó được gọi khi widget đã thay đổi và cần vẽ lại giao diện người dùng của nó
  • deactivate() – được gọi trước dispose() , khi đối tượng này được xóa ra khỏi cây widget.
  • dispose() – được gọi khi widget đã bị xóa khỏi state và không thể khởi tạo lại.

#SafeArea widget là gì?

Đây là một widget bao ngoài tất cả widget khác, mục đích là để nó không chiếm vào thanh thông báo của thiết bị, ứng dụng sẽ nằm ở dưới thanh thông báo.

#Flutter chỉ dành cho ứng dụng di động?

Không, bạn cũng có thể xây dựng các ứng dụng web – mặc dù nó vẫn đang trong giai đoạn thử nghiệm và chưa được phát hành chính thức.

#Những cách nào để tạo navigation?

#Flutter có thực sự là native không?

Ứng dụng Flutter được biên dịch thành một thư viện ARM và x86 native, vì vậy, về mặt kỹ thuật, nó như là native.

#Làm cách nào để bạn đặt kích thước widget dựa trên kích thước màn hình?

Sử dụng hàm MediaQuery.of(context).size

#Lệnh để cập nhật tất cả các plugin là gì?

flutter pub upgrade

#Lập trình bất đồng bộ trong Dart (Flutter) như thế nào? Future trong Flutter là gì?

#Factory trong Flutter là gì?

https://api.flutter.dev/flutter/foundation/Factory-class.html

#Các loại tham số trong hàm flutter?

https://www.youtube.com/watch?v=n5eix5aeZvg

#Phân biệt constfinal

#Tệp pubspec.yml là gì?

Đó là một tệp mà bạn có thể khai báo sử dụng tất cả các thư viện, plugin, font chữ, hình ảnh… của dự án Flutter của bạn. Đó cũng là nơi bạn định cấu hình tên và mô tả của dự án. Tệp này chứa:

  • Cài đặt chung của dự án như tên, mô tả và phiên bản của dự án.
  • Sự phụ thuộc của dự án.
  • Nội dung dự án (ví dụ: hình ảnh, âm thanh, v.v.).

#Tập tin AndroidManifest.xml là gì?

#Tập tin Info.plist là gì?

#Làm cách nào để bạn đặt biểu tượng ứng dụng trong Android và iOS?

#Làm thế nào để tạo một TextField với giá trị ban đầu?

Chúng ta cần đặt một controller với giá trị ban đầu:

  • TextEditingController(text: ‘Giá trị ban đầu’); .
  • FocusScope.of(context).unfocus();

#Làm thế nào để bạn tải một hình ảnh từ mạng?

Để hiển thị hình ảnh từ một URL, chúng ta có thể sử dụng hàm Image.network()

#Làm thế nào để bạn ghi đè nút back trên thiết bị?

Chúng ta có thể sử dụng WillPopScope widget cho việc này.

#Mục đích của thuộc tính reverse trên một ListView widget là gì?

Nó hiển thị các item trong ListView theo thứ tự đảo ngược.

#Tween Animation là gì?

Đây là hình thức rút gọn của in-betweening. Trong hoạt ảnh tween, bắt buộc phải xác định điểm đầu và điểm cuối của hoạt ảnh. Nó có nghĩa là hoạt ảnh bắt đầu với giá trị bắt đầu, sau đó đi qua một loạt các giá trị trung gian và cuối cùng đạt đến giá trị kết thúc. Nó cũng cung cấp dòng thời gian và đường cong, xác định thời gian và tốc độ của quá trình chuyển đổi. framework công cụ cung cấp tính toán về cách chuyển đổi từ điểm đầu và điểm cuối.

#Stream trong Flutter là gì?

Luồng là một chuỗi các sự kiện không đồng bộ. Nó cung cấp một chuỗi dữ liệu không đồng bộ. Nó cũng giống như một đường ống mà chúng ta đặt một số giá trị vào một đầu và nếu chúng ta có một người nghe ở đầu kia, nó sẽ nhận được giá trị đó. Chúng tôi có thể giữ nhiều người nghe trong một luồng và tất cả những người nghe đó sẽ nhận được cùng một giá trị khi được đưa vào đường dẫn.

(Các câu hỏi sẽ được chúng tôi tiếp tục cập nhật)

hocbaicungcon

Leave a Reply

Your email address will not be published. Required fields are marked *