Câu hỏi phỏng vấn Mobile Apps Developer

61 Các câu hỏi phỏng vấn Mobile Apps Developer được chia sẻ bởi các ứng viên

Câu hỏi phỏng vấn

Mobile Apps Developer được hỏi... 20/06/2023

Từ khóa Swift mutating có nghĩa là gì?

1 câu trả lời

Là các cấu trúc loại giá trị là bất biến. Có nghĩa là các biến khác không thể thay đổi giá trị ví dụ của cấu trúc tại bất kỳ điểm nào.

Từ đột biến chỉ được yêu cầu để thay đổi giá trị của các biến tự bên trong chức năng của cấu trúc.

struct MyStruct {
var abc: String = "initila value"

func changeValue() {
abc = "some other value". //Compile time error: Cannot assign to property: 'self' is immutable. Mark method 'mutating' to make 'self' mutable.
}
}

Ở đây khi chúng ta đang cố gắng thay đổi giá trị của biến abc bên trong hàm được khai báo trong chính cấu trúc, chúng ta gặp lỗi thời gian biên dịch.

Vì vậy, ở đây chúng ta cần làm cho chức năng biến đổi để tạo ra giá trị thay đổi bên trong cấu trúc. Do đó, mã chính xác sẽ là:

struct MyStruct {
var abc: String = "initila value"

mutating func changeValue() {
abc = "some other value"
}
}

 
 
Mobile Apps Developer được hỏi... 20/06/2023

IndexedDB là gì và PWA sử dụng nó như thế nào?

1 câu trả lời

IndexedDB là một hệ thống lưu trữ NoSQL quy mô lớn. Nó cho phép bạn lưu trữ bất cứ thứ gì trong trình duyệt của người dùng. Ngoài các hành động tìm kiếm, nhận và đặt thông thường, IndexedDB cũng hỗ trợ các giao dịch.

IndexedDB là một API cấp thấp để lưu trữ phía máy khách một lượng đáng kể dữ liệu có cấu trúc, bao gồm các tệp/đốm màu. API này sử dụng các chỉ mục để cho phép tìm kiếm dữ liệu này với hiệu suất cao. Mặc dù Bộ lưu trữ DOM hữu ích để lưu trữ lượng dữ liệu nhỏ hơn, nhưng nó ít hữu ích hơn để lưu trữ lượng dữ liệu có cấu trúc lớn hơn. IndexedDB cung cấp một giải pháp.

Trong ngữ cảnh của PWA, một đề xuất chung để lưu trữ dữ liệu ngoại tuyến:

  • Đối với các tài nguyên mạng cần thiết để tải ứng dụng của bạn khi ngoại tuyến, hãy sử dụng API bộ đệm (một phần của nhân viên dịch vụ).
  • Đối với tất cả các dữ liệu khác, hãy sử dụng IndexedDB (với trình bao bọc lời hứa).
Mobile Apps Developer được hỏi... 20/06/2023

Ràng buộc dữ liệu Android là gì ?

1 câu trả lời

Thư viện liên kết dữ liệu là một thư viện hỗ trợ cho phép bạn liên kết các thành phần giao diện người dùng trong bố cục của mình với các nguồn dữ liệu trong ứng dụng của bạn bằng định dạng khai báo thay vì theo lập trình.

Bố cục thường được xác định trong các hoạt động có mã gọi các phương thức khung giao diện người dùng. Ví dụ: mã bên dưới gọi hàm findViewById() để tìm một tiện ích TextView và liên kết nó với thuộc tính userName của biến viewModel:

TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());

Ví dụ sau đây cho thấy cách sử dụng Thư viện liên kết dữ liệu để gán văn bản cho tiện ích trực tiếp trong tệp bố cục. Điều này loại bỏ nhu cầu gọi bất kỳ mã Java nào được hiển thị ở trên.

<TextView
android:text="@{viewmodel.userName}" />

Ưu điểm của việc sử dụng Android Data Binding:

  • Giảm mã soạn sẵn mà lần lượt mang lại
  • Ít khớp nối
  • Khả năng đọc mạnh mẽ hơn
  • Mạnh mẽ, dễ triển khai thuộc tính tùy chỉnh và chế độ xem tùy chỉnh
  • Thậm chí còn nhanh hơn findViewById- Liên kết thực hiện một lượt trên hệ thống phân cấp Chế độ xem, trích xuất Chế độ xem có ID. Cơ chế này có thể nhanh hơn gọi findViewById cho một số Chế độ xem.
Mobile Apps Developer được hỏi... 13/06/2023

Explicit Intent là gì ?

1 câu trả lời

Explicit Intent được sử dụng để gọi một thành phần cụ thể .

Khi bạn biết thành phần nào bạn muốn khởi chạy và bạn không muốn cung cấp cho người dùng toàn quyền kiểm soát thành phần nào sẽ được sử dụng. Ví dụ: bạn có một ứng dụng có 2 hoạt động. Hoạt động A và hoạt động B. Bạn muốn khởi chạy hoạt động B từ hoạt động A. Trong trường hợp này, bạn xác định mục đích rõ ràng nhắm mục tiêu hoạt động B, sau đó sử dụng nó để gọi trực tiếp hoạt động đó.

Mobile Apps Developer được hỏi... 20/06/2023

Typecasting là gì ?

1 câu trả lời

Đôi khi bạn biết thông tin mà Swift không biết:bạn biết rằng lớp UIViewControllerbạn tham chiếu thực tế là PictureViewControllerlớp con tùy chỉnh của bạn và bạn muốn xử lý nó như một lớp con. Ví dụ: đây là cách chúng tôi tạo bộ điều khiển chế độ xem mới từ bảng phân cảnh:

let vc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController

Đó as? là một lỗi đánh máy - chúng tôi đang chuyển cho Swift kiến ​​thức rằng bộ điều khiển chế độ xem mà chúng tôi dự kiến ​​sẽ được tạo trên thực tế là một tệp DetailViewController. Nếu typecast không thành công thì vcsẽ là con số không, nhưng nếu nó thành công thì Swift sẽ có thể sử dụng nó như một tệp DetailViewController.

Mobile Apps Developer được hỏi... 20/06/2023

Sự khác biệt giữa as?, as! và as trong Swift?

1 câu trả lời

  • Trong Swift 1.2 trở lên, as chỉ có thể được sử dụng để upcasting (hoặc định hướng) và khớp mẫu :

// 'as' for pattern matching
switch item {
case let obj as MyObject:
// this code will be executed if item is of type MyObject
case let other as SomethingElse:
// this code will be executed if item is of type SomethingElse
...
}

  • as? tạo ra một giá trị tùy chọn, đó là giá trị nếu nó có thể được chuyển sang loại đã chỉ định hoặc nilnếu không thể.
  • as! không tạo ra một tùy chọn, nó chỉ tạo ra một giá trị của loại đã chỉ định và nếu truyền không thành công, nó sẽ hủy bỏ chương trình. Nói foo as! SomeTypevề cơ bản cũng giống như nói (foo as? SomeType)!(ngoại trừ bạn nhận được thông báo lỗi tốt hơn).

Bạn chỉ nên sử dụng as!nếu bạn chắc chắn 100% rằng dàn diễn viên sẽ thành công (vì nếu bạn sai, toàn bộ chương trình sẽ bị hủy bỏ).

Mobile Apps Developer được hỏi... 13/06/2023

Sự khác biệt giữa PhoneGap, Cordova và Ionic là gì?

1 câu trả lời

PhoneGap là một thư viện hiển thị các chức năng gốc của điện thoại di động dưới dạng API JavaScript. Khi Adobe mua PhoneGap, lõi nguồn mở của nó đã được tặng cho Quỹ phần mềm Apache dưới tên Cordova. Ban đầu, hầu như không có sự khác biệt giữa Cordova và PhoneGap. Mặc dù, qua nhiều năm phát triển, Adobe đã bắt đầu thêm một bộ dịch vụ độc quyền vào PhoneGap. Ngày nay, có thể nói PhoneGap là Cordova cộng với các dịch vụ bổ sung của Adobe.

Ionic sử dụng Cordova , không phải PhoneGap cho các công cụ cốt lõi của nó. Bên cạnh các chức năng riêng của điện thoại di động, Ionic cung cấp cấu trúc và khả năng mở rộng mã cho các ứng dụng JavaScript bằng cách sử dụng AngularJS (Angular, React và Vue cho IOnic 4). Nó cũng cung cấp một tập hợp các chỉ thị và thành phần Angular để tăng tốc độ phát triển ứng dụng.

Mobile Apps Developer được hỏi... 13/06/2023

Sự khác biệt giữa Xamarin.Forms và Xamarin Native là gì ?

1 câu trả lời

Sự khác biệt chính là trong Xamarin Forms, bạn không chỉ chia sẻ logic nghiệp vụ mà còn cả giao diện người dùng. Trong các biểu mẫu Xamarin, bạn sẽ sử dụng các thành phần cơ bản trên tất cả các nền tảng (Nút, Nhãn, v.v.). Đó là lý do tại sao nó được gọi là Xamarin.Forms, vì nó phù hợp với các biểu mẫu cơ bản.

Nhưng đối với Xamarin Native (Xamarin.iOS và Xamarin.Android ), bạn sẽ tạo giao diện người dùng cho mỗi nền tảng (Một cho iOS, một cho Android). Bạn có thể làm được nhiều hơn với Xamarin Native, vì bạn sẽ sử dụng các thành phần gốc.

Mobile Apps Developer được hỏi... 13/06/2023

Đâu là sự khác biệt giữa Activityvà Context?

1 câu trả lời

  • Context là đối tượng cơ sở. Vì vậy, mọi thứ Activity giống như Application bắt nguồn từ Context. Điều này có nghĩa là mọi Activity và every Ứng dụng là một tệp Context.
  • Bối cảnh ứng dụng kéo dài, miễn là ứng dụng của bạn còn hoạt động, trong khi
  • bối cảnh Hoạt động chết với bạn Activity ( nó không hợp lệ sau onDestroy() )

Vì vậy, nếu bạn cần Ngữ cảnh trên các Hoạt động (tức là trong Singleton ), bạn nên sử dụng Ngữ cảnh ứng dụng sẽ tốt hơn .

 
 
 
Mobile Apps Developer được hỏi... 20/06/2023

Đâu là sự khác biệt giữa Handler,AsyncTask và Thread?

1 câu trả lời

Lớp Handler có thể được sử dụng để đăng ký một luồng và cung cấp một kênh đơn giản để gửi dữ liệu đến luồng này. Trình xử lý cho phép bạn liên lạc lại với chuỗi giao diện người dùng từ chuỗi nền khác.

Lớp AsyncTask gói gọn việc tạo một quy trình nền và đồng bộ hóa với luồng chính. Nó cũng hỗ trợ báo cáo tiến độ của các tác vụ đang chạy.

Và một Chủ đề về cơ bản là yếu tố cốt lõi của đa luồng mà nhà phát triển có thể sử dụng với nhược điểm sau:

  • Xử lý đồng bộ hóa với luồng chính nếu bạn đăng lại kết quả lên giao diện người dùng
  • Không có mặc định để hủy chủ đề
  • Không có chủ đề tổng hợp mặc định
  • Không có mặc định để xử lý thay đổi cấu hình trong Android
Mobile Apps Developer được hỏi... 13/06/2023

Đâu là sự khác biệt giữa compileSdkVersion và targetSdkVersion?

1 câu trả lời

Đây compileSdkVersion là phiên bản của API mà ứng dụng được biên dịch dựa trên. Điều này có nghĩa là bạn có thể sử dụng các tính năng API của Android có trong phiên bản API đó (rõ ràng là cũng như tất cả các phiên bản trước đó). Nếu bạn thử và sử dụng các tính năng của API16 nhưng được đặt compileSdkVersion thành 15, bạn sẽ gặp lỗi biên dịch. Nếu đặt compileSdkVersion thành 16, bạn vẫn có thể chạy ứng dụng trên thiết bị API 15 miễn là đường dẫn thực thi ứng dụng của bạn không tìm cách gọi bất kỳ API nào dành riêng cho API 16.  

Điều này targetSdkVersion không liên quan gì đến cách ứng dụng của bạn được biên dịch hoặc API nào bạn có thể sử dụng. Điều này targetSdkVersionđược cho là cho biết rằng bạn đã thử nghiệm ứng dụng của mình trên (có lẽ là tối đa và bao gồm) phiên bản bạn chỉ định. Đây giống như một chứng nhận hoặc đăng xuất mà bạn đang cung cấp cho Hệ điều hành Android như một gợi ý về cách hệ điều hành sẽ xử lý ứng dụng của bạn về các tính năng của Hệ điều hành.

 
Mobile Apps Developer được hỏi... 20/06/2023

Đâu là sự khác biệt giữa Self và self?

1 câu trả lời

Khi bạn viết các giao thức và phần mở rộng giao thức, sẽ có sự khác biệt giữa Self (chữ S viết hoa) và self (chữ S viết thường).

Khi được sử dụng với chữ S viết hoa, Self đề cập đến loại phù hợp với giao thức, ví dụ: String hoặc Int.

Khi được sử dụng với chữ thường S, self đề cập đến giá trị bên trong loại đó, ví dụ: “xin chào” hoặc 556.

Ví dụ, xem xét phần mở rộng này trên BinaryInteger:

extension BinaryInteger {
func squared() -> Self {
return self * self
}
}

Hãy nhớ rằng, Self với chữ S viết hoa đề cập đến bất kỳ loại nào phù hợp với giao thức. Trong ví dụ trên, Inttuân theo BinaryInteger, vì vậy khi được gọi Int phương thức này sẽ trả về một Int.

Mặt khác, self với chữ thường S đề cập đến bất kỳ giá trị nào mà loại đó nắm giữ. Nếu ví dụ trên được gọi khi Int lưu trữ giá trị 5 thì nó thực sự sẽ là 5 * 5.

 
Mobile Apps Developer được hỏi... 20/06/2023

Khi nào sử dụng strong, weak và unowned ?

1 câu trả lời

  • Để xác định xem bạn có cần lo lắng về mạnh, yếu hay không được sở hữu hay không, hãy hỏi, “Tôi có đang xử lý các loại tham chiếu không”. Nếu bạn đang làm việc với Structs hoặc Enums, ARC sẽ không quản lý bộ nhớ cho các Loại đó và bạn thậm chí không cần phải lo lắng về việc chỉ định yếu hoặc không được sở hữu cho các hằng số hoặc biến đó.
  • Tham chiếu mạnh là tốt trong các mối quan hệ phân cấp nơi cha mẹ tham chiếu đến con, nhưng không phải ngược lại. Trên thực tế, các tham chiếu mạnh là loại tham chiếu thích hợp nhất trong hầu hết thời gian.
  • Khi hai phiên bản có liên quan tùy chọn với nhau, hãy đảm bảo rằng một trong những phiên bản đó có tham chiếu yếu đến phiên bản kia.
  • Khi hai phiên bản có liên quan theo cách mà một trong các phiên bản không thể tồn tại nếu không có phiên bản kia, thì phiên bản có phần phụ thuộc bắt buộc cần giữ một tham chiếu không được sở hữu cho phiên bản kia.
Mobile Apps Developer được hỏi... 14/06/2023

Mô tả Anr?

1 câu trả lời

ANR là viết tắt của "Application Not Responding". Đó là hộp thoại xuất hiện khi ứng dụng không phản hồi trong hơn 10 giây (đôi khi có thể dưới 10 giây). Hộp thoại ANR cung cấp cho người dùng tùy chọn đóng ứng dụng hoặc đợi ứng dụng chạy xong.

Mobile Apps Developer được hỏi... 14/06/2023

Làm thế nào để tránh một Anr?

1 câu trả lời

Theo dõi câu hỏi trước, có một số câu trả lời có thể có ở đây. Những gì bạn muốn nghe là bạn muốn thực hiện ít công việc nhất có thể trên luồng chính, còn được gọi là "luồng giao diện người dùng".

Vì đó là luồng đơn lõi mà ứng dụng của bạn chạy trên đó, nên bạn sẽ muốn giữ các hoạt động yêu cầu tính toán phức tạp hơn hoặc kết nối mạng và cơ sở dữ liệu, chẳng hạn như trên các luồng công nhân riêng biệt để không làm chậm luồng chính.

Mobile Apps Developer được hỏi... 14/06/2023

Các ứng dụng dành cho thiết bị di động được xác định và xác định như thế nào?

1 câu trả lời

Phạm vi bắt đầu với một cái nhìn dài và chăm chỉ vào thiết bị. Các thiết bị di động cung cấp các yếu tố hình thức, kích thước và độ phân giải màn hình, sức mạnh tính toán và chức năng khác nhau. Chúng chạy các hệ điều hành khác nhau và có các phương thức truy xuất dữ liệu khác như wifi hoặc 3G.

Thách thức là phải hiểu thiết bị và cách sử dụng thiết bị để đạt được lợi ích tốt nhất: tập trung vào lợi ích của thiết bị, chẳng hạn như kích thước và tính di động, đồng thời đảm bảo rằng trải nghiệm người dùng sẽ được tối ưu hóa.

Mobile Apps Developer được hỏi... 14/06/2023

Bạn cần thông tin nào trước khi bắt đầu viết mã ứng dụng Android cho khách hàng?

1 câu trả lời

Bạn muốn biết rằng người này sẽ tìm cách thực sự hiểu những gì bạn đang cố gắng thực hiện với ứng dụng của mình và chức năng.

Bạn nên nghe những mục sau đây:

  • Tuyên bố mục tiêu hoặc mục đích của ứng dụng dành cho nhà xuất bản ứng dụng
  • Mô tả đối tượng mục tiêu hoặc nhân khẩu học của người dùng
  • Bất kỳ ứng dụng hiện có nào có thể giống với ứng dụng đó
  • Wireframes
  • Tác phẩm nghệ thuật; Các nhà phát triển giỏi nhất sẽ nói rằng họ yêu cầu tác phẩm nghệ thuật phải được hoàn thành trước khi phát triển. Điều này tránh sự chậm trễ và giúp nhà phát triển hiểu được giao diện và thương hiệu mà bạn đang cố gắng đạt được.
Mobile Apps Developer được hỏi... 20/06/2023

Làm cách nào để phản hồi các chuyển đổi trạng thái trên ứng dụng của bạn?

1 câu trả lời

Khi chuyển đổi trạng thái có thể được phản hồi đối với các thay đổi trạng thái theo cách thích hợp bằng cách gọi các phương thức tương ứng trên đối tượng ủy nhiệm của ứng dụng.

Ví dụ:

  • phương thức applicationDidBecomeActive có thể được sử dụng để chuẩn bị chạy dưới dạng ứng dụng nền trước.
  • applicationDidEnterBackground có thể được sử dụng để thực thi một số mã khi ứng dụng đang chạy ẩn và có thể bị treo bất kỳ lúc nào.
  • Phương thức applicationWillEnterForeground có thể được sử dụng để thực thi một số mã khi ứng dụng của bạn di chuyển ra khỏi nền ứng dụng
  • Phương thức WillTerminate được gọi khi ứng dụng của bạn bị chấm dứt.
Mobile Apps Developer được hỏi... 20/06/2023

Khi chúng tôi nói rằng một ứng dụng đang ở trạng thái hoạt động?

1 câu trả lời

Một ứng dụng được cho là ở trạng thái hoạt động khi nó đang chạy ở nền trướcđang nhận các sự kiện.

Mobile Apps Developer được hỏi... 20/06/2023

Các kịch bản được mô tả khi ứng dụng chuyển sang trạng thái không hoạt động?

1 câu trả lời

Một ứng dụng có thể chuyển sang trạng thái Không hoạt động khi người dùng khóa màn hình hoặc hệ thống nhắc người dùng phản hồi một số sự kiện, ví dụ: Tin nhắn SMS, cuộc gọi đến, v.v.

Đang xem 21 - 40 trong 61 câu hỏi phỏng vấn