Program profesional "Pengembang iOS" - Praktik Terbaik 5 bulan untuk mengembangkan aplikasi seluler menggunakan Swift 5. Lulusan terbaik diharapkan pada wawancara dengan 12 perusahaan mitra OTUS, jadi kami menerbitkan terjemahan artikel akhir dari seri "Pertanyaan Wawancara iOS (Swift)", di mana kami akan mempertimbangkan lebih banyak lagi puluhan pertanyaan, jawaban yang akan membantu Anda dengan pekerjaan.

1. Apa kesalahan dan di mana mereka bisa digunakan?
- Penutupan adalah fragmen kode mandiri yang dapat diteruskan ke fungsi sebagai argumen atau digunakan dalam suatu program.
- Penutupan di Swift seperti blok di C dan Objective-C dan seperti lambdas dalam bahasa pemrograman lain.
- Ini hampir sama dengan fungsi, tetapi penutupan tidak harus disebutkan namanya.
- Tidak perlu mendeklarasikan tipe dari setiap parameter, tetapi jika Anda melakukannya, maka Anda tidak perlu menentukan tipe dari nilai balik.
Ikuti tautan untuk melihat semua opsi sintaksis penutupan.
2. Apa yang dimaksud dengan penutupan escaping / nonescaping?
Penutupan @nonescaping (standar):
- Ketika penutupan dilewatkan dalam argumen fungsi dan dan digunakan sebelum tubuh fungsi dieksekusi dan kontrol kembali.
- Ketika fungsi selesai , penutup yang dilewati keluar dari ruang lingkup dan tidak lagi ada dalam memori.
Penutupan @escaping (runaway):
- Ketika penutupan dilewatkan dalam argumen fungsi dan digunakan setelah fungsi tubuh dieksekusi dan kontrol kembali.
- Ketika fungsi selesai , penutupan yang ditransmisikan terus ada dalam ruang lingkup dan tetap berada dalam memori sampai penutupan selesai. tautannya
3. Tunjukkan jenis koleksi apa yang tersedia di Swift?

- Array - digunakan untuk menyimpan beberapa nilai dari jenis yang sama dalam bentuk yang dipesan.
- Set (Set) - digunakan untuk menyimpan nilai yang berbeda dari jenis yang sama dalam bentuk yang tidak terurut.
- Kamus - Digunakan untuk menyimpan pasangan nilai kunci dalam bentuk yang tidak berurutan.
4. Bagaimana kelas dasar didefinisikan dalam Swift?
Di Swift, kelas yang tidak mewarisi dari kelas dasar, dan kelas yang Anda tentukan tanpa menentukan superclass, secara otomatis menjadi kelas dasar.
5. Apa itu deinitializers dan bagaimana mereka ditulis dalam Swift?
De-initializer dideklarasikan segera sebelum membebaskan memori yang ditempati oleh instance kelas. Deinitializer ditulis dengan deinit kata kunci. Ini digunakan jika Anda perlu melakukan tindakan atau pembersihan sebelum membebaskan memori yang ditempati oleh objek.
Misalnya , jika Anda membuat kelas khusus untuk membuka file dan menulis beberapa data, Anda harus menutup file sebelum membebaskan memori yang ditempati oleh instance kelas.
Deinitializer ditulis tanpa tanda kurung dan tidak menerima parameter apa pun.
deinit { // }
6. Kapan tanda tanya ganda “??” digunakan?
Operator ini disebut nil join operator . Ini digunakan untuk mengatur nilai default jika opsinya nihil.
let a: String? = nil let b = "nil coalescing operator" let result = a ?? b print(result) //:"nil coalescing operator"
- a ?? b mendekompresi opsional a jika mengandung nilai, atau mengembalikan nilai default b jika a adalah nil.
- Ekspresi a selalu memiliki tipe opsional. Ekspresi b harus cocok dengan tipe yang disimpan di dalam a.
6. Apa perbedaan antara '?' Dan '!'?
Simbol "?"
- Saat bekerja dengan opsi, Anda dapat menempatkan "?" di depan set perintah seperti metode, properti, dan subskrip.
- Jika nilainya sebelum "?" sama dengan nihil, lalu semua yang muncul setelah "?" diabaikan, dan nilai seluruh ekspresi menjadi nihil.
- Jika tidak, opsi tersebut dibongkar, dan segala sesuatu yang muncul setelah "?" bertindak berdasarkan nilai yang sudah dibongkar.
- Dalam kedua kasus, nilai seluruh ekspresi adalah opsional.
Simbol "!"
- Setelah memverifikasi bahwa opsional berisi nilai, Anda dapat mengakses nilai dasarnya dengan menambahkan tanda seru (!) Di akhir nama opsional.
- Tanda seru sebenarnya mengatakan, “Saya tahu bahwa opsi ini sangat penting; tolong gunakan itu. ”
- Gunakan hanya jika Anda benar-benar yakin bahwa opsi yang dibongkar secara implisit penting saat pertama kali Anda mengaksesnya.
7. Apa jenis alias di Swift?
Deklarasi alias tipe memperkenalkan nama alias dari tipe yang ada ke dalam program. Deklarasi tipe alias dinyatakan menggunakan kata kunci typealias.
typealias name = tipe yang ada
typealias StudentName = String let name:StudentName = "Jack"
Anda dapat menggunakan typealias untuk sebagian besar tipe di Swift, misalnya:
- Jenis bawaan (mis. String, Int)
- Jenis khusus (mis. Kelas, struktur, enumerasi)
- Jenis kompleks (mis. Penutupan)
8. Apa perbedaan antara fungsi dan metode di Swift?
Metode adalah fungsi yang terkait dengan kelas, struktur, atau enumerasi. Ini berlaku untuk metode instance dan metode ketik.
Fungsi - dideklarasikan dalam lingkup global dan bukan milik jenis apa pun.
Fungsi dapat didefinisikan di luar kelas atau di dalam kelas / struktur / enumerasi, sementara metode harus didefinisikan di dalam dan menjadi bagian dari kelas / struktur / enumerasi.
9. Apa sintaks dari parameter eksternal?
Parameter eksternal memungkinkan kita memberi nama pada parameter fungsi untuk membuat tujuannya lebih dimengerti.
func power (basis a: Int, eksponen b: Int) -> Int
* Kadang-kadang berguna untuk memberi nama setiap parameter saat memanggil fungsi untuk menunjukkan tujuan dari setiap argumen yang diteruskan ke fungsi.
Jika Anda ingin pengguna fungsi Anda memberikan nama parameter saat dipanggil, tentukan nama parameter eksternal untuk setiap parameter selain nama parameter lokal. *
10. Apakah mungkin untuk mendefinisikan ulang struktur dan enumerasi di Swift?
Anda tidak dapat membuat subclass struktur atau enumerasi, Anda juga tidak bisa menimpanya. Karena struktur adalah jenis nilai, dan kompiler perlu mengetahui ukuran pastinya pada waktu kompilasi, yang membuatnya mustahil.
Untuk menemukan bagian sebelumnya, ikuti tautan Bagian 1 , Bagian 2 , Semua tentang penutupan , Semua tentang properti
Itu saja! Kami yakin bahwa terjemahan akan bermanfaat tidak hanya bagi siswa kursus Pengembang iOS , tetapi juga bagi banyak pengguna Habr. Kami berharap Anda sukses secara profesional dan menantikan grup berikutnya dari program online berhak cipta kami!