Kata pengantar
Emas tiga perak empat akan segera hadir, tetapi karena alasan khusus tahun ini mungkin ditunda menjadi emas empat perak lima, tetapi setiap kali ini adalah waktu yang tepat untuk mencari pekerjaan, apakah teman-teman sibuk meninjau pertanyaan wawancara? Nah, beberapa waktu yang lalu editornya sibuk mencari pekerjaan dan mewawancarai banyak perusahaan, untungnya saya beruntung bisa bergabung dengan perusahaan favorit saya. Di bawah ini saya akan merangkum dan membagikan jawaban atas pertanyaan wawancara yang saya perjuangkan secara pribadi dan pertanyaan wawancara yang saya terima. Selamat datang semua mitra untuk bimbingan dan nasihat.
Berikut ini hanyalah pengetahuan Android.Jika Anda membutuhkan pertanyaan wawancara Java, Anda dapat meninggalkan pesan di bawah ini.
1. Siklus hidup aktivitas (ini adalah suatu keharusan)
onCreate () Buat aktivitas, lakukan beberapa operasi inisialisasi data onStart () Tak terlihat untuk terlihat onResume () Dapat berinteraksi dengan pengguna, yang terletak di bagian atas tumpukan onPause () Dipanggil ketika aktivitas lain dijeda, dimulai atau dilanjutkan onStop () Berhenti dan jadilah tidak terlihat onDestroy () menghancurkan onRestart () Ubah dari status berhenti menjadi status berjalan
2. Fragment life cycle (ini mungkin ditanyakan, kemungkinan bertanya tidak terlalu besar)
3. Siklus hidup layanan
onCreate ()
Sistem akan memanggil metode ini saat layanan pertama kali dibuat. Jika layanan sudah berjalan, metode ini tidak akan dipanggil, ini hanya akan dipanggil sekali.
onStartCommand ()
Ketika komponen lain meminta untuk memulai layanan dengan memanggil startService (), sistem akan memanggil metode ini.
onDestroy ()
Ketika layanan tidak lagi digunakan dan akan dihancurkan, sistem akan memanggil metode ini.
onBind ()
Ketika komponen lain mengikat layanan dengan memanggil bindService (), sistem akan memanggil metode ini.
onUnbind ()
Saat komponen lain melepaskan ikatan dari layanan dengan memanggil unbindService (), sistem akan memanggil metode ini.
onRebind ()
Jika komponen lama dilepas dari layanan, komponen baru lainnya terikat ke layanan, dan onUnbind () mengembalikan nilai true, sistem akan memanggil metode ini.
4. Metode memulai layanan (tanyakan tentang Layanan, ini harus ditanyakan)
1. mulaiLayanan
. Tentukan kelas untuk mewarisi layanan . Konfigurasikan layanan dalam file manifest.xml . Mulai layanan dengan konteks startService (maksud) . Jika tidak lagi digunakan, panggil stopService (Intent) untuk menghentikan layanan
2. bindService
. Buat segmen layanan bindService, yang diwariskan dari layanan dan di kelas, buat objek instance yang mengimplementasikan antarmuka pengikat dan sediakan metode publik untuk dipanggil oleh klien
. Kembalikan instance pengikat ini dari metode callback onbind ()
. Di klien, terima pengikat dari metode callback onserviceconnected (), dan gunakan metode yang disediakan untuk memanggil layanan terikat
5. Metode memulai aktivitas (terkadang bertanya)
. Mode standar
a. Mode startup default aktivitas
b. Setiap kali sebuah Aktivitas dimulai, sebuah instance baru dibuat di atas tumpukan. Misalnya: program jam alarm
Kekurangan: Ketika Aktivitas sudah berada di puncak tumpukan, dan Anda perlu membuat instance baru saat Anda memulai Aktivitas lagi, itu tidak dapat digunakan kembali secara langsung.
. Mode singleTop
Fitur: Mode ini akan menentukan apakah instance Aktivitas yang akan dimulai berada di bagian atas tumpukan, jika di bagian atas tumpukan, itu akan digunakan kembali secara langsung, jika tidak, instance baru akan dibuat. Misalnya: bookmark browser
Kekurangan: Jika Aktivitas tidak berada di bagian atas tumpukan, beberapa contoh dapat dibuat.
. Mode singleTask
Fitur: Jadikan Aktivitas hanya satu contoh di seluruh aplikasi. Setiap kali Anda memulai Aktivitas, sistem akan memeriksa terlebih dahulu apakah ada instance Aktivitas saat ini dalam tumpukan, jika ada
Gunakan kembali secara langsung, dan lepaskan semua instance di Aktivitas saat ini. Misalnya: antarmuka utama browser
. Mode singleInstance
Fitur: Aktivitas dalam mode ini akan memulai tumpukan tugas baru untuk mengelola instance Aktivitas, dan hanya ada satu kekuatan di seluruh sistem. Tidak peduli dari tumpukan tugas mana Aktivitas dimulai, tumpukan tugas tempat Aktivitas berada akan ditransfer ke latar depan, sehingga Aktivitas ditampilkan. Fungsi utamanya adalah untuk berbagi Aktivitas dalam program yang berbeda
6. Sentuh mekanisme pengiriman acara
Saat kami mengklik layar, peristiwa berikut terjadi:
Aktivitas memanggil metode dispathTouchEvent () untuk meneruskan kejadian ke Window;
Window kemudian meneruskan event ke DecorView (DecorView adalah layout root View);
DecorView kemudian diteruskan ke ViewGroup;
Aktivitas -- > Jendela > DecorView > ViewGroup > Melihat
Ada tiga metode utama untuk distribusi acara
dispatchTouchEvent () dispatch
onInterceptTouchEvent () intersepsi, hanya ViewGroup yang memiliki metode ini
onTouchEvent () menangani kejadian sentuh
Aktivitas pertama memanggil dispathTouchEvent () untuk didistribusikan, lalu memanggil super untuk meneruskan
ViewGroup pertama-tama memanggil dispathTouchEvent () untuk distribusi, lalu memanggil onInterceptTouchEvent () (peristiwa intersep). Jika acara intersepsi mengembalikan nilai true, itu berarti intersepsi dan acara tidak akan diteruskan ke ViewGroup atau View yang lebih rendah; false berarti tidak akan mencegat dan terus mendistribusikan acara. Standarnya salah, perlu diingatkan, View tidak memiliki metode onInterceptTouchEvent ()
Peristiwa diteruskan antara ViewGroup dan ViewGroup, ViewGroup dan View, dan akhirnya mencapai View;
View memanggil metode dispathTouchEvent (), lalu memproses kejadian di OnTouchEvent (); OnTouchEvent () mengembalikan nilai true, yang berarti bahwa kejadian dikonsumsi dan tidak lagi diteruskan; mengembalikan salah, yang berarti bahwa kejadian tidak dipakai dan dikembalikan ke lapisan atas untuk diproses.
7. Perkenalkan proses dasar penerapan Tampilan kustom
. Sesuaikan atribut View untuk menulis file attr.xml . Referensi di file layout, dan pada saat yang sama mereferensikan namespace . Dapatkan atribut khusus kita dalam metode konstruksi View, dan baca di kontrol kustom (konstruksi Metode untuk mendapatkan nilai file attr.xml) . Tulis ulang onMesure . Tulis ulang onDraw
8. Apa saja animasi di Android
Animasi Bingkai
Memuat serangkaian sumber daya Dapat digambar untuk membuat animasi. Sederhananya, ini adalah untuk memutar serangkaian gambar untuk mendapatkan efek animasi. Anda dapat menyesuaikan durasi setiap gambar
Tween Animation
Tween dapat mengimplementasikan serangkaian efek animasi pada objek View, seperti terjemahan, zoom, rotasi, transparansi, dll. Namun, ini tidak mengubah nilai properti View, tetapi hanya mengubah posisi menggambar View. Misalnya, tombol tidak berada di posisi aslinya setelah animasi, tetapi peristiwa klik masih merupakan koordinat asli.
Animasi Properti
Selain objek View tradisional, objek animasi juga dapat berupa objek Objek. Setelah animasi selesai, nilai properti objek Objek benar-benar berubah.
9. Apakah ANR itu? Bagaimana cara menghindari dan mengatasi ANR
Aplikasi Tidak Merespons, yaitu aplikasi tidak merespons
Terdapat tiga alasan untuk ini:
a) KeyDispatchTimeout (5 detik) Jenis utama tombol atau peristiwa sentuh tidak merespons dalam waktu tertentu
b) BroadcastTimeout (10 detik) BoradcastReceiver tidak dapat diproses dalam waktu tertentu
c) ServiceTimeout (20 detik) memiliki kemungkinan kecil bahwa Service tidak dapat diproses dalam waktu tertentu
Hal terpenting untuk menghindari ANR adalah mengurangi operasi yang memakan waktu di thread utama. Biasanya perlu dimulai dari skema berikut:
a) Gunakan sub-utas untuk menangani operasi IO yang memakan waktu
b) Turunkan prioritas utas anak. Saat menggunakan Thread atau HandlerThread, panggil Process.setThreadPriority (Process.THREAD_PRIORITY_BACKGROUND) untuk mengatur prioritas, jika tidak respon program akan tetap berkurang, karena prioritas Thread default sama dengan utas utama
c) Gunakan Handler untuk memproses hasil sub-utas daripada menggunakan Thread.wait () atau Thread.sleep () untuk memblokir utas utama
d) Cobalah untuk menghindari kode yang menghabiskan waktu dalam callback onCreate dan onResume dari Aktivitas
e) Kode onReceiver di BroadcastReceiver juga harus meminimalkan operasi yang memakan waktu. Disarankan untuk menggunakan intentService untuk pemrosesan. IntentService adalah layanan asinkron yang akan berhenti secara otomatis, yang memecahkan masalah lupa untuk menghentikan dan menghancurkan layanan dalam layanan tradisional setelah memproses operasi yang memakan waktu.
10. Bagaimana cara mengoptimalkan ListView (saya akan bertanya sesekali)
Tata letak item, semakin sedikit level semakin baik, gunakan alat hierarchyview untuk melihat pengoptimalan.
Gunakan kembali convertView
Gunakan ViewHolder
Jika ada gambar dalam item, muat secara asinkron
Ketika menggesek dengan cepat, jangan memuat gambar
Ketika ada gambar di item, gambar harus dikompresi dengan benar
Menyadari pemuatan data paging
11. Ketika perangkat beralih antara layar horizontal dan vertikal, perubahan dalam siklus hidup (ini kadang-kadang bertanya)
Jika android: configChanges aktivitas tidak disetel, setiap siklus proses akan dipanggil kembali saat layar dipotong. Ini akan dijalankan satu kali saat layar dipotong horizontal, dan dua kali saat layar dipotong vertikal.
Saat Anda menyetel android: configChanges = "orientasi" Aktivitas, setiap siklus hidup akan dipanggil lagi saat layar dipotong, dan hanya akan dijalankan satu kali saat layar dipotong secara horizontal atau vertikal.
Saat menyetel aktivitas android: configChanges = "orientasi | keyboardHidden", setiap siklus hidup tidak akan dipanggil lagi saat layar dipotong, hanya metode onConfigurationChanged yang akan dijalankan
12. Adaptasi AndroidUI
Gunakan sp untuk font, gunakan dp, gunakan match_parent, wrap_content, lebih berbobot
Sumber daya gambar, resolusi gambar yang berbeda, taruh di folder yang sesuai, Anda dapat menggunakan persentase sebagai gantinya.
13. Perbedaan antara RecyclerView dan ListView (ini suatu keharusan)
RecyclerView bisa menyelesaikan efek ListView, GridView, dan efek aliran air terjun. Pada saat yang sama, Anda juga dapat mengatur arah gulir daftar (vertikal atau horizontal);
Penggunaan kembali tampilan di RecyclerView tidak mengharuskan pengembang untuk menulis kode mereka sendiri, dan sistem telah menyelesaikan paketnya.
RecyclerView dapat disegarkan sebagian.
RecyclerView menyediakan API untuk mengimplementasikan efek animasi item.
Dalam hal kinerja:
Jika Anda perlu sering menyegarkan data dan perlu menambahkan animasi, RecyclerView memiliki keuntungan yang lebih besar.
Jika hanya ditampilkan sebagai daftar, perbedaan keduanya tidak terlalu besar.
14, mekanisme pemrosesan pesan asinkron Android (ini juga akan sering ditanyakan)
Mekanisme pemrosesan pesan asinkron terutama digunakan untuk menyelesaikan masalah pembaruan UI dengan utas anak
Ada empat bagian utama:
. Dalam Pesan
Lewat di antara utas, dapat membawa sejumlah kecil informasi di dalamnya, digunakan untuk bertukar data di antara utas yang berbeda
Anda dapat menggunakan bidang what, arg1, arg2 untuk membawa data integer
Bidang obj membawa objek Objek
. Penangan (Penangan)
Terutama digunakan untuk mengirim dan memproses pesan, sendMessage () digunakan untuk mengirim pesan, dan pada akhirnya akan kembali ke handleMessage () untuk diproses
. MessageQueue (antrian pesan)
Terutama menyimpan semua pesan yang dikirim melalui Handler, mereka akan selalu ada dalam antrian menunggu untuk diproses
Hanya ada satu MessageQueue per utas
. Looper (looper)
Setelah memanggil metode loop (), pesan yang akan diproses akan terus dikeluarkan dari MessageQueue dan kemudian diteruskan ke handleMessage untuk diproses
15. Apakah kebocoran memori dan kelebihan memori? Bagaimana cara mengatasi kebocoran memori secara umum?
(1) Perbedaan antara kehabisan memori (OOM) dan kebocoran memori (objek tidak dapat didaur ulang). (2) Penyebab kebocoran memori (3) Alat deteksi kebocoran memori LeakCanary
Kehabisan memori: Ini berarti bahwa ketika program menerapkan memori, tidak ada cukup ruang memori untuk digunakan, dan keluar dari memori muncul; misalnya, jika bilangan bulat diterapkan, tetapi dapat disimpan lama untuk itu, itu adalah luapan memori. Secara umum, kelebihan memori adalah memori yang tidak mencukupi.
Kebocoran memori kebocoran memori: Artinya, program tidak dapat melepaskan ruang memori yang dialokasikan setelah menerapkan memori. Kerusakan kebocoran memori dapat diabaikan, tetapi konsekuensi dari akumulasi kebocoran memori sangat serius. Tidak peduli berapa banyak memori, cepat atau lambat akan diambil.
Penyebab kebocoran memori dan solusinya:
1. Kebocoran memori yang disebabkan oleh Handler.
Solusi: Mendeklarasikan Handler sebagai kelas internal statis tidak akan memiliki referensi ke kelas eksternal SecondActivity, dan siklus hidupnya tidak ada hubungannya dengan kelas eksternal.
Jika konteks diperlukan di Handler, kelas eksternal dapat dirujuk melalui referensi yang lemah
2. Kebocoran memori yang disebabkan oleh mode tunggal .
Solusi: Konteks adalah ApplicationContext, karena siklus hidup ApplicationContext konsisten dengan aplikasi, itu tidak akan menyebabkan kebocoran memori
3. Kebocoran memori yang disebabkan oleh instance statis yang dibuat oleh kelas dalam non-statis.
Solusi: Ubah kelas internal menjadi statis untuk menghindari kebocoran memori
Keempat, kebocoran memori yang disebabkan oleh kelas dalam anonim non-statis.
Solusi: Setel kelas dalam anonim menjadi statis.
5. Kebocoran memori yang disebabkan oleh penggunaan registrasi / de-registrasi yang tidak berpasangan.
Daftarkan penerima siaran, EventBus, dll., Ingatlah untuk melepas ikatan.
Keenam, kebocoran memori yang disebabkan oleh objek sumber daya tidak ditutup.
Ketika sumber daya ini tidak digunakan, ingatlah untuk memanggil close (), destroy (), recycler (), release () yang sesuai, dan metode lain untuk merilisnya.
Tujuh, kebocoran memori yang disebabkan oleh objek koleksi tidak dibersihkan tepat waktu.
Biasanya beberapa objek dimuat ke dalam koleksi. Saat tidak digunakan, Anda harus ingat untuk membersihkan koleksi tepat waktu agar objek terkait tidak lagi direferensikan.
16. Apa kerangka pemuatan gambar? Apa perbedaan di antara keduanya? (Ini juga perlu)
ImageLoader:
keuntungan:
Mendukung pemantauan kemajuan unduhan;
Pemuatan gambar dapat dijeda selama tampilan bergulir;
Terapkan beberapa algoritme cache memori secara default. Cache gambar ini dapat dikonfigurasi dengan algoritme cache, tetapi ImageLoader menerapkan lebih banyak algoritme cache secara default, seperti ukuran terbesar, hapus dulu, gunakan hapus paling sedikit, paling terakhir digunakan, hapus dulu, dan paling sering. Hapus pertama yang lama, dll.;
Mendukung definisi aturan nama file cache lokal;
Kekurangan:
Kerugiannya adalah tidak mendukung pemuatan gambar GIF, dan mekanisme caching tidak terintegrasi dengan baik dengan caching http. Ini sepenuhnya merupakan set mekanisme caching-nya sendiri
Picasso:
keuntungan:
Dengan fungsi pemantauan statistiknya sendiri, ini mendukung pemantauan penggunaan cache gambar, termasuk tingkat cache hit, ukuran memori yang digunakan, lalu lintas yang disimpan, dll.
Mendukung pemrosesan prioritas
Dukung penundaan hingga penghitungan ukuran gambar selesai dan dimuat
Mendukung mode penerbangan, jumlah utas bersamaan bervariasi sesuai dengan jenis jaringan. Saat ponsel beralih ke mode penerbangan atau jenis jaringan berubah, secara otomatis akan menyesuaikan kumpulan utas bersamaan maksimum.
"Tidak ada" cache lokal. Picasso sendiri tidak mengimplementasikan cache lokal, tetapi diimplementasikan oleh okhttp. Keuntungannya adalah waktu kedaluwarsa gambar dapat dikontrol dengan meminta Kontrol-Cache dan Kedaluwarsa di Header Respons.
Kekurangan:
Karena GIF tidak didukung, format ARGB_8888 digunakan untuk menyimpan gambar secara default, dan ukuran cache besar.
Meluncur:
keuntungan:
Cache Gambar- > Cache media, mendukung Gif, WebP, thumbnail. Bahkan Video.
Mendukung pemrosesan prioritas
Konsisten dengan siklus hidup Aktivitas / Fragmen, dukung trimMemory
Dukung okhttp, Volley. Glide memperoleh data melalui UrlConnection secara default, yang dapat digunakan dengan okhttp atau Volley. ImageLoader dan Picasso yang sebenarnya juga mendukung okhttp dan Volley.
Memori ramah, cache memori lebih kecil, gambar menggunakan RGB565 default, bukan ARGB888 secara default
Kekurangan:
Definisinya buruk, tetapi dapat diatur
Lukisan dinding:
keuntungan:
Gambar disimpan dalam memori bersama anonim di sistem Android, bukan di memori heap mesin virtual, sehingga tidak akan menyebabkan oom karena pemuatan gambar, dan juga mengurangi kelambatan antarmuka yang disebabkan oleh seringnya panggilan pengumpul sampah untuk mendaur ulang Bitmap, dan kinerjanya lebih tinggi.
Muat gambar JPEG secara progresif, dukung gambar dari buram hingga pemuatan yang jelas
Gambar dapat ditampilkan di ImageView di titik tengah mana pun, bukan hanya di tengah gambar.
Ukuran gambar JPEG juga diubah secara native, bukan di memori heap mesin virtual, yang juga mengurangi OOM
mendukung tampilan gambar GIF dengan sangat baik
Kekurangan:
Kerangkanya besar, yang memengaruhi volume Apk dan tidak praktis untuk digunakan
17. Apa kerangka jaringan? Apa perbedaan di antara keduanya? (Ini juga akan ditanyakan)
Xutils
Kerangka kerja ini sangat komprehensif. Dapat digunakan untuk permintaan jaringan, pemrosesan pemuatan gambar, penyimpanan data, dan anotasi tampilan. Sangat nyaman menggunakan kerangka kerja ini, tetapi kekurangannya juga sangat jelas. Menggunakan proyek ini akan menyebabkan proyek merespons kerangka kerja ini. Ketergantungan sangat serius, sekali ada masalah dengan kerangka kerja ini, itu akan berdampak besar pada proyek
OKhttp
Dalam pengembangan Android, Anda bisa langsung menggunakan api yang sudah jadi untuk membuat permintaan jaringan. Apakah menggunakan HttpClient, HttpUrlConnection untuk beroperasi. Untuk program Java dan Android, okhttp merangkum pustaka permintaan http berkinerja tinggi yang mendukung sinkronisasi dan asinkron, dan okhttp juga merangkum kumpulan utas, merangkum konversi data, merangkum penggunaan parameter, dan penanganan kesalahan. API lebih nyaman digunakan. Namun saat kami menggunakannya dalam proyek, kami masih perlu membuat lapisan enkapsulasi sendiri, agar kami dapat menggunakannya dengan lebih lancar.
Tembakan
Volley adalah pustaka permintaan asinkron kecil dan indah yang dirilis secara resmi oleh Google. Kerangka kerjanya sangat dapat dikembangkan. Ini mendukung HttpClient, HttpUrlConnection, dan bahkan OkHttp, dan Volley juga merangkum ImageLoader, jadi Anda bahkan tidak membutuhkannya jika ingin Gunakan kerangka pemuatan gambar, tetapi fungsi ini tidak sekuat beberapa kerangka pemuatan gambar khusus. Ini dapat digunakan untuk kebutuhan sederhana, dan kerangka pemuatan gambar khusus masih diperlukan untuk kebutuhan yang lebih kompleks. Volley juga memiliki kekurangan, seperti tidak mendukung post big data, sehingga tidak cocok untuk mengupload file. Namun, niat asli desain Volley sendiri lahir untuk permintaan jaringan yang sering dengan jumlah data yang kecil.
Retrofit
Retrofit adalah sekumpulan kerangka kerja permintaan jaringan RESTful berdasarkan OkHttp yang dienkapsulasi oleh Square secara default. RESTful adalah gaya desain api yang populer, bukan standar. Enkapsulasi Retrofit dapat dikatakan sangat kuat. Ini melibatkan banyak pola desain. Anda dapat langsung mengkonfigurasi permintaan melalui anotasi. Anda dapat menggunakan klien http yang berbeda. Meskipun defaultnya adalah http, Anda dapat menggunakan Pengonversi Json yang berbeda untuk membuat serial data. Memberikan dukungan untuk RxJava, menggunakan Retrofit + OkHttp + RxJava + Dagger2 dapat dikatakan sebagai kerangka kerja yang relatif trendi, tetapi membutuhkan ambang batas yang relatif tinggi.
Voli VS OkHttp
Keuntungan dari Volley adalah pengemasannya lebih baik, dan untuk menggunakan OkHttp Anda harus memiliki kemampuan yang cukup untuk melakukan pengemasan lagi. Keuntungan dari OkHttp terletak pada kinerjanya yang lebih tinggi, karena OkHttp didasarkan pada NIO dan Okio, lebih cepat daripada kinerja Volley. Baik IO dan NIO adalah konsep di Java. Jika saya membaca data dari hard disk, cara pertama adalah menunggu program melanjutkan operasi setelah membaca data. Ini yang paling sederhana, disebut juga pemblokiran IO. Salah satunya adalah Anda membaca milik Anda, program kemudian akan dijalankan, dan Anda akan memberi tahu saya saat data diproses, dan kemudian memproses panggilan balik. Metode kedua adalah NIO, yaitu non-blocking, jadi NIO tentunya memiliki kinerja yang lebih baik daripada IO, dan Okio adalah pustaka aliran data yang lebih sederhana dan lebih efisien yang dikembangkan oleh Square berdasarkan IO dan NIO. Secara teori, jika Volley dan OkHttp dibandingkan, maka Volley lebih cenderung menggunakan, karena Volley juga mendukung penggunaan OkHttp secara internal, sehingga keunggulan kinerja OkHttp hilang, dan paket Volley sendiri lebih mudah digunakan dan memiliki skalabilitas yang lebih baik.
OkHttp VS Retrofit
Tidak ada keraguan bahwa Retrofit dienkapsulasi berdasarkan OkHttp secara default. Dalam hal ini, tidak ada perbandingan. Retrofit jelas merupakan pilihan pertama.
Voli VS Retrofit
Kedua pustaka ini dikemas dengan baik, tetapi Retrofit dipisahkan secara lebih menyeluruh, terutama Retrofit 2.0, Jake telah melakukan banyak pemfaktoran ulang dari desain 1.0 sebelumnya yang tidak masuk akal, dan tanggung jawabnya lebih terbagi, dan Retrofit menggunakan OkHttp secara default. , Performa juga lebih unggul dari Volley, dan jika proyek Anda menggunakan RxJava, maka Retrofit harus digunakan. Jadi dibandingkan dengan kedua library tersebut, Retrofit memiliki kelebihan lebih, jika bisa menguasai kedua framework tersebut, sebaiknya Retrofit digunakan terlebih dahulu. Namun, ambang Retrofit sedikit lebih tinggi dari Volley. Dibutuhkan sedikit usaha untuk memahami prinsip-prinsipnya dan berbagai kegunaannya. Jika Anda tahu sedikit tentang itu, disarankan untuk menggunakan Volley dalam proyek komersial.
18. Pola desain mana yang familiar?
Jawablah sesuai dengan situasi Anda yang sebenarnya, tentu saja lebih banyak lebih baik. Misalnya, saya sendiri terbiasa dengan pola tunggal.
19. Cache tiga tingkat (ini terkadang bertanya)
Pemuatan jaringan, tidak ada pemuatan prioritas, kecepatan lambat, pemborosan lalu lintas
Cache lokal, pemuatan prioritas kedua, cepat
Cache memori, pemuatan prioritas, tercepat
Saat Anda memuat Aplikasi Android untuk pertama kali, Anda harus mendapatkan gambar melalui interaksi jaringan. Setelah itu, kita dapat menyimpan gambar ke kartu SD lokal dan memori internal. Saat menjalankan APP, kami akan memprioritaskan untuk mengakses cache gambar di memori internal. Jika tidak ada di memori internal, kami akan memuatnya secara lokal. Gambar di kartu SD, dan akhirnya memilih untuk mengakses jaringan
20. Apa yang dimaksud dengan enkripsi simetris dan enkripsi asimetris dalam cara Android berinteraksi dengan server?
Enkripsi simetris , Artinya, kunci yang sama digunakan untuk enkripsi dan dekripsi data. Algoritme untuk ini adalah DES.
Enkripsi asimetris , Enkripsi dan dekripsi menggunakan kunci yang berbeda. Sebelum mengirim data, Anda harus terlebih dahulu menyetujui server untuk membuat kunci publik dan kunci privat. Data yang dienkripsi dengan kunci publik dapat didekripsi dengan kunci privat, dan sebaliknya. Algoritma di area ini adalah RSA. Baik ssh dan ssl adalah enkripsi asimetris yang khas.
Di akhir artikel:
Ada beberapa hal yang tidak hanya perlu Anda pahami, tetapi juga harus bisa mengungkapkannya dengan baik agar pewawancara bisa mengenali pemahaman Anda, seperti mekanisme Handler yang menjadi pertanyaan wajib dalam wawancara. Ada beberapa poin yang tidak jelas, mungkin hanya tinggal dalam wawancara, Anda tidak akan menggunakannya sama sekali dalam pekerjaan yang sebenarnya, tetapi Anda harus tahu apa itu.
Ini akan menjadi musim puncak untuk wawancara tentang emas, perak dan perak. Semua orang berharap menggunakan kesempatan ini untuk menemukan pekerjaan favorit. Namun bagaimanapun wawancaranya apapun itu, jika ingin menghindari pelecehan oleh pewawancara, anda harus memaksimalkan pertanyaan wawancara dan membuat persiapan yang komprehensif.Tentunya selain itu, anda juga perlu meletakkan dasar yang kokoh di masa damai. , Jadi tidak peduli bagaimana pewawancara menggali poin pengetahuannya sendiri, Anda juga bisa mengatasinya ~
Wawancara: Jika Anda tidak mempersiapkan wawancara yang memadai, itu akan membuang-buang waktu dan Anda tidak akan bertanggung jawab untuk diri sendiri!
Selama musim wawancara Golden 9th Silver 10th, cepatlah dan persiapkan untuk wawancara Anda!
Terakhir, editor di sini membagikan koleksi lusinan set yang terkait dengan diagram sistem teknis di atas. Pertanyaan wawancara dari Tencent, Toutiao, Ali, Meituan dan perusahaan lain selama 19 tahun , Mengatur poin-poin teknis ke dalam video dan PDF (sebenarnya butuh lebih banyak energi dari yang diharapkan), termasuk Konteks pengetahuan + banyak detail , Karena keterbatasan tempat, berikut ini sebagian berupa gambar.
dan juga Teknologi arsitektur canggih peta pikiran canggih, materi khusus wawancara pengembangan Android , Materi kerangka lanjutan tingkat lanjut untuk membantu semua orang belajar meningkatkan tingkat mahir, dan juga menghemat waktu setiap orang untuk mencari materi di Internet untuk dipelajari, dan mereka juga dapat dibagikan dengan teman-teman di sekitar untuk belajar bersama.
[Catatan tentang pengetahuan inti pengembangan Android]
[Peta pikiran Android (pohon keterampilan)]
[Dokumen PDF teknologi canggih inti Android, analisis pertanyaan nyata dalam wawancara BAT]
[Sumber Daya Pembelajaran Video Arsitektur Lanjutan Android]
Setelah menerima dan mempelajari Video Pengenalan Android, itu bahkan lebih hebat! Masuk pabrik BATJ dan sebagainya (persiapan)! Saat ini, dikatakan bahwa Internet itu dingin. Faktanya, itu tidak lebih dari Anda masuk ke mobil yang salah dan Anda memakai lebih sedikit (keterampilan). Jika Anda masuk ke mobil yang tepat dan kemampuan teknis Anda cukup kuat, biaya penggantian perusahaan tinggi. Bagaimana Anda bisa diberhentikan? Ini hanya untuk menghilangkan bisnis akhir Curd! Saat ini, ada banyak sekali programmer junior di pasar. Kumpulan tutorial ini ditujukan untuk teknisi pengembangan Android yang berusia 1-6 tahun. Mereka berada dalam periode hambatan. Mereka yang ingin menembus kenaikan gaji mereka di tahun depan, Android lanjutan menengah dan senior, arsitek bahkan lebih penting bagi Anda. Seperti ikan di air, dapatkan dengan cepat!
[Video pembelajaran lanjutan Android], [set lengkap wawancara Android menipu PDF], [Catatan pengetahuan inti pengembangan Android] dapat diperoleh melalui pesan pribadi [Android] gratis!
- Bagaimana mempersiapkan pertanyaan wawancara bagi pemrogram seluler untuk berganti pekerjaan dan meningkatkan tingkat keberhasilan wawancara hingga 80%?
- Penjelasan terperinci tentang cadangan keterampilan yang diperlukan untuk pengalaman wawancara Android, telah mendapat tawaran itu
- Bingung soal arah teknisnya? Pengembang seluler senior berbicara tentang arah pengembangan Android di masa depan