Altın üç gümüş dörtlü için hazır mısınız: işte Android 20'nin sorulması gereken mülakat soruları ve ayrıntılı analiz

Önsöz

Altın üç gümüş dört yakında geliyor, ancak bu yıl özel nedenlerden dolayı altın dört gümüş beşe ertelenebilir, ancak bu her iş bulmak için iyi bir zaman, arkadaşlar mülakat sorularını gözden geçirmekle meşgul mü? Eh, editör bir süre önce iş aramakla meşguldü ve birçok şirketle röportaj yaptı.Neyse ki favori şirketime katıldığım için şanslıydım. Aşağıda kişisel olarak mücadele ettiğim mülakat sorularının cevaplarını ve aldığım mülakat sorularını özetleyip paylaşacağım. Rehberlik ve tavsiye için tüm ortaklara hoş geldiniz.

Aşağıdakiler sadece Android bilgisidir.Java mülakat sorularına ihtiyacınız varsa aşağıya bir mesaj bırakabilirsiniz.

1. Aktivite yaşam döngüsü (bu bir zorunluluktur)

onCreate () Aktiviteler oluşturun, bazı veri başlatma işlemleri yapın onStart () Görünmez Özgeçmişte() Yığının en üstünde bulunan kullanıcıyla etkileşim kurabilir onPause () Başka bir etkinlik duraklatıldığında, başlatıldığında veya devam ettirildiğinde çağrılır onStop () Dur ve görünmez ol onDestroy () yok etmek onRestart () Durdurulmuş durumdan çalışma durumuna geçiş

2. Parça yaşam döngüsü (bu sorulabilir, sorma olasılığı çok büyük değildir)

3. Hizmet yaşam döngüsü

onCreate ()

Sistem, hizmet ilk oluşturulduğunda bu yöntemi çağıracaktır. Hizmet zaten çalışıyorsa, bu yöntem çağrılmayacak, yalnızca bir kez çağrılacaktır.

onStartCommand ()

Başka bir bileşen startService () 'i çağırarak bir hizmeti başlatmak istediğinde, sistem bu yöntemi çağıracaktır.

onDestroy ()

Hizmet artık kullanılmadığında ve yok edileceğinde, sistem bu yöntemi çağıracaktır.

onBind ()

Başka bir bileşen bindService () 'i çağırarak hizmete bağlandığında, sistem bu yöntemi çağıracaktır.

onUnbind ()

Başka bir bileşen unbindService () çağırarak hizmetten ayrıldığında, sistem bu yöntemi çağıracaktır.

onRebind ()

Eski bileşen hizmetten ayrıldığında, başka bir yeni bileşen hizmete bağlanır ve onUnbind () true değerini döndürür, sistem bu yöntemi çağırır.

4. Hizmet başlatma yöntemi (Hizmet hakkında bilgi isteyin, bu sorulmalıdır)

1.startService

. Hizmeti devralmak için bir sınıf tanımlayın . Manifest.xml dosyasında hizmeti yapılandırın service. Hizmeti bağlam startService (amaç) ile başlatın . Artık kullanılmadığında, hizmeti durdurmak için stopService (Amaç) çağrısı yapın

2.bindService

. BindService servis segmentini oluşturun, servisten devralın ve sınıfta, bağlayıcı arayüzünü uygulayan bir örnek nesnesi oluşturun ve istemcinin çağırması için genel yöntemler sağlar

. Bu bağlayıcı örneğini onbind () geri çağrı yönteminden döndür

. İstemcide, onserviceconnected () geri çağrı yönteminden bağlayıcıyı alın ve bağlı hizmeti çağırmak için sağlanan yöntemi kullanın

5. Aktivite başlatma yöntemi (ara sıra sor)

. Standart mod

a. Aktivitenin varsayılan başlangıç modu

b. Bir Activity her başlatıldığında, yığının en üstünde yeni bir örnek oluşturulur. Örneğin: çalar saat programı

Dezavantajlar: Etkinlik zaten yığının en üstündeyse ve Etkinliği yeniden başlattığınızda yeni bir örnek oluşturmanız gerektiğinde, doğrudan yeniden kullanılamaz.

.singleTop modu

Özellikler: Bu mod, başlatılacak Activity örneğinin yığının en üstünde olup olmadığını belirler, yığının en üstündeyse doğrudan yeniden kullanılır, aksi takdirde yeni bir örnek oluşturulur. Örneğin: tarayıcı yer imleri

Dezavantajlar: Activity yığının en üstünde değilse, birden çok örnek oluşturulabilir.

.singleTask modu

Özellikler: Activity'i uygulamanın tamamında yalnızca bir örnek yapın. Activity'i her başlattığınızda, sistem öncelikle yığında mevcut bir Activity örneği olup olmadığını kontrol eder, eğer varsa

Doğrudan yeniden kullanın ve mevcut Aktivitedeki tüm örnekleri açın. Örneğin: tarayıcı ana arayüzü

. SingleInstance modu

Özellikleri: Bu moddaki etkinlik, Etkinlik örneklerini yönetmek için yeni bir görev yığını başlatır ve tüm sistemde yalnızca bir kuvvet vardır. Aktivite hangi görev yığınından başlatılırsa başlatılsın, Aktivitenin bulunduğu görev yığını ön plana aktarılır, böylece Aktivite görüntülenir. Ana işlev, farklı programlarda bir Aktivite paylaşmaktır.

6. Dokunma etkinliği teslim mekanizması

Ekrana tıkladığımızda aşağıdaki olaylar gerçekleşir:

Activity, olayı Window'a iletmek için dispathTouchEvent () yöntemini çağırır;

Pencere daha sonra olayı DecorView'e iletir (DecorView, View'un kök düzenidir);

DecorView daha sonra ViewGroup'a aktarılır;

Aktivite -- > Pencere > DecorView > ViewGroup > Görünüm

Olay dağıtımı için üç temel yöntem vardır

dispatchTouchEvent () gönderimi

onInterceptTouchEvent () müdahalesi, yalnızca ViewGroup bu yönteme sahiptir

onTouchEvent () dokunma olaylarını yönetir

Activity ilk olarak dağıtmak için dispathTouchEvent () 'i çağırır ve ardından süper'i devre dışı bırakmak için çağırır

ViewGroup önce dağıtım için dispathTouchEvent () 'i çağırır ve ardından onInterceptTouchEvent () (müdahale olayı) çağırır. Kesişme olayı doğru olarak dönerse, bu engelleme anlamına gelir ve olay daha düşük ViewGroup veya View'e aktarılmayacaktır; false, olayı kesmeyeceği ve dağıtmaya devam etmeyeceği anlamına gelir. Varsayılan yanlıştır, hatırlatılması gerekir, View'da onInterceptTouchEvent () yöntemi yoktur

Olaylar ViewGroup ve ViewGroup, ViewGroup ve View arasında geçirilir ve son olarak View'a ulaşır;

View, dispathTouchEvent () yöntemini çağırır ve ardından olayı OnTouchEvent () içinde işler; OnTouchEvent (), olayın tüketildiği ve artık geçmediği anlamına gelen true değerini döndürür; false değerini döndürür, bu da olayın tüketilmediği ve işlenmek üzere üst katmana döndürüldüğü anlamına gelir.

7. Özel bir Görünüm uygulamanın temel sürecini tanıtın

. Attr.xml dosyasını yazmak için View özniteliklerini özelleştirin . Yerleşim dosyasındaki referans ve aynı zamanda ad alanına referans verin . Görünüm oluşturma yönteminde özel özniteliklerimizi edinin ve bunları özel denetimde okuyun (inşa Attr.xml dosya değerini alma yöntemi) . Yeniden Yaz onMesure . Yeniden Yaz onDraw

8. Android'deki animasyonlar nelerdir

Çerçeve Animasyonu

Bir animasyon oluşturmak için bir dizi Çekilebilir kaynak yükleyin. Basitçe söylemek gerekirse, animasyon efektini elde etmek için bir dizi resim oynatmaktır. Her resmin süresini özelleştirebilirsiniz

Ara Animasyon

Ara, Görünüm nesnesine çevirme, yakınlaştırma, döndürme, saydamlık vb. Gibi bir dizi animasyon efekti uygulayabilir. Ancak, View özelliğinin değerini değiştirmez, yalnızca Görünümün çizim konumunu değiştirir.Örneğin, bir düğme bir animasyondan sonra orijinal konumunda değildir, ancak tıklama olayı yine de orijinal koordinattır.

Emlak Animasyonu

Geleneksel View nesnesine ek olarak, animasyonlu nesne bir Object nesnesi de olabilir Animasyon bittikten sonra, Object nesnesinin özellik değeri gerçekten değiştirilir.

9. ANR nedir? ANR nasıl önlenir ve çözülür

Uygulama Yanıt Vermiyor, yani uygulama yanıt vermiyor

Bunun üç sebebi var:

a) KeyDispatchTimeout (5 saniye) Ana tuş türleri veya dokunma olayları belirli bir süre içinde yanıt vermiyor

b) BroadcastTimeout (10 saniye) BoradcastReceiver belirli bir süre içinde işlenemez

c) ServiceTimeout (20 saniye), Hizmetin belirli bir süre içinde işlenememe olasılığı düşüktür.

ANR'den kaçınılması gereken en önemli şey, ana iş parçacığında zaman alan işlemleri azaltmaktır. Genellikle aşağıdaki şemalardan başlamanız gerekir:

a) Zaman alan GÇ işlemlerini işlemek için alt iş parçacıkları kullanın

b) Çocuk iş parçacığının önceliğini düşürün.Tahre veya HandlerThread kullanırken, önceliği ayarlamak için Process.setThreadPriority (Process.THREAD_PRIORITY_BACKGROUND) 'u çağırın, aksi takdirde program yanıtı düşürülür çünkü varsayılan Thread önceliği ana iş parçacığı ile aynıdır

c) Ana iş parçacığını engellemek için Thread.wait () veya Thread.sleep () kullanmak yerine alt iş parçacıklarının sonuçlarını işlemek için İşleyiciyi kullanın

d) onCreate ve onResume Activity'nin geri çağırmalarında zaman alan kodlardan kaçınmaya çalışın

e) BroadcastReceiver'daki onReceiver kodu da zaman alan işlemleri en aza indirmelidir.İşleme için intentService kullanılması önerilir. IntentService, zaman alan işlemleri işledikten sonra geleneksel Hizmette hizmeti durdurmayı ve yok etmeyi unutma sorununu çözen, otomatik olarak duracak zaman uyumsuz bir hizmettir.

10. ListView nasıl optimize edilir (ara sıra soracağım)

Öğe düzeni, ne kadar az düzey olursa o kadar iyidir, optimizasyonu görüntülemek için hiyerarşi görünümü aracını kullanın.

convertView'ü yeniden kullan

ViewHolder'ı kullanın

Öğede resimler olduğunda, eşzamansız olarak yükleyin

Hızlıca kaydırırken resimleri yüklemeyin

Öğede resimler varken, resimler uygun şekilde sıkıştırılmalıdır

Verilerin sayfalama yüklemesini gerçekleştirin

11. Cihaz yatay ve dikey ekranlar arasında değiştirildiğinde, yaşam döngüsündeki değişiklik (bu bazen sorar)

Aktivitenin android: configChanges ayarlanmadığında, ekran kesildiğinde her bir yaşam döngüsü yeniden başlatılacaktır. Ekran yatay olarak kesildiğinde bir kez ve ekran dikey olarak kesildiğinde iki kez yürütülecektir.

Aktivitenin android: configChanges = "oryantasyonu" ayarını yaptığınızda, ekran kesildiğinde her bir yaşam döngüsü yeniden çağrılacak ve ekran yatay veya dikey olarak kesildiğinde yalnızca bir kez çalıştırılacaktır.

Activitynin android: configChanges = orientation | keyboardHidden ayarı yapılırken, ekran kesildiğinde her yaşam döngüsü tekrar çağrılmaz, yalnızca onConfigurationChanged yöntemi çalıştırılır

12. AndroidUI uyarlaması

Yazı tipi için sp kullanın, dp kullanın, match_parent, wrap_content kullanın, daha fazla ağırlık kullanın

Resim kaynakları, farklı resimlerin çözünürlükleri, ilgili klasördeki yüzdelerle değiştirilebilir.

13. RecyclerView ve ListView arasındaki fark (bu bir zorunluluktur)

RecyclerView, ListView, GridView ve şelale akışının etkisini tamamlayabilir. Aynı zamanda, listenin kaydırma yönünü (dikey veya yatay) da ayarlayabilirsiniz;

RecyclerView'da görünümlerin yeniden kullanılması, geliştiricilerin kendi kodlarını yazmalarını gerektirmez ve sistem paketi zaten tamamlamıştır.

RecyclerView kısmen yenilenebilir.

RecyclerView, öğe animasyon efektlerini uygulamak için bir API sağlar.

Performans açısından:

Verileri sık sık yenilemeniz gerekiyorsa ve animasyonlar eklemeniz gerekiyorsa, RecyclerView daha büyük bir avantaja sahiptir.

Yalnızca liste olarak görüntülenirse, ikisi arasındaki fark çok büyük değildir.

14, Android eşzamansız mesaj işleme mekanizması (bu ayrıca sık sorulacaktır)

Eşzamansız mesaj işleme mekanizması temel olarak kullanıcı arayüzünün alt iş parçacığı tarafından güncellenmesi sorununu çözmek için kullanılır.

Dört ana bölüm vardır:

. Mesajda

İş parçacıkları arasında geçen, farklı iş parçacıkları arasında veri alışverişi yapmak için kullanılan az miktarda bilgiyi içeride taşıyabilir

Tamsayı verilerini taşımak için what, arg1, arg2 alanlarını kullanabilirsiniz

Obj alanı Object nesnelerini taşır

. İşleyici (İşleyici)

Genelde mesaj göndermek ve işlemek için kullanılır, sendMessage () mesaj göndermek için kullanılır ve sonunda işlenmek üzere handleMessage () 'e geri dönecektir.

. MessageQueue (mesaj kuyruğu)

Temelde İşleyici aracılığıyla gönderilen tüm iletileri depolar, her zaman işlenmeyi bekleyen kuyrukta bulunurlar

İş parçacığı başına yalnızca bir MessageQueue vardır

. İlmek yapıcı (ilmek yapıcı)

Loop () yöntemi çağrıldıktan sonra, işlenecek mesajlar sürekli olarak MessageQueue'dan çıkarılır ve ardından işlenmek üzere handleMessage'a geçirilir.

15. Bellek sızıntıları ve bellek taşmaları nelerdir? Genel olarak bellek sızıntılarıyla nasıl baş edilir?

(1) Yetersiz bellek (OOM) ile bellek sızıntısı arasındaki fark (bir nesne geri dönüştürülemez). (2) Bellek sızıntılarının nedenleri (3) Bellek sızıntısı tespit araçları LeakCanary

Bellek yetersiz: Bu, program belleğe başvurduğunda, kullanması için yeterli bellek alanı olmadığı ve bellek yetersiz olduğu anlamına gelir; örneğin, bir tamsayı uygulanıyorsa, ancak bunun için uzun süre saklanabiliyorsa, bu bir bellek taşmasıdır. Genel olarak konuşursak, bellek taşması yetersiz bellektir.

Bellek sızıntısı bellek sızıntısı: Bu, programın belleğe başvurduktan sonra ayrılmış bellek alanını serbest bırakamayacağı anlamına gelir.Bir bellek sızıntısının zararı göz ardı edilebilir, ancak bellek sızıntısının sonuçları çok ciddidir.Ne kadar bellek olursa olsun, er ya da geç kullanılacaktır.

Bellek sızıntılarının nedenleri ve çözümleri:

1. İşleyicinin neden olduğu bellek sızıntısı.

Çözüm: İşleyiciyi statik bir dahili sınıf olarak bildirmek, SecondActivity harici sınıfına bir başvuruda bulunmayacaktır ve yaşam döngüsünün harici sınıflarla ilgisi yoktur.

İşleyicide bağlam gerekiyorsa, harici sınıflara zayıf referanslar aracılığıyla başvurulabilir.

2. Tekli moddan kaynaklanan bellek sızıntıları .

Çözüm: Bağlam, ApplicationContext'tir, çünkü ApplicationContext'in yaşam döngüsü uygulama ile tutarlıdır, bellek sızıntısına neden olmaz

3. Statik olmayan iç sınıflar tarafından oluşturulan statik örneklerden kaynaklanan bellek sızıntıları.

Çözüm: Bellek sızıntılarını önlemek için dahili sınıfı statik olarak değiştirin

Dördüncü olarak, statik olmayan anonim iç sınıfların neden olduğu bellek sızıntıları.

Çözüm: Anonim iç sınıfı statik olarak ayarlayın.

5. Eşleştirilmemiş kayıt / kayıt silme kullanımından kaynaklanan bellek sızıntıları.

Yayın alıcısını, EventBus'u vb. Kaydedin, bağlantıyı çözmeyi unutmayın.

Altıncı olarak, kaynak nesnesinin neden olduğu bellek sızıntısı kapatılmaz.

Bu kaynaklar kullanımda olmadığında, bunları serbest bırakmak için ilgili close (), destroy (), recycler (), release () ve diğer yöntemleri çağırmayı unutmayın.

Yedi, toplama nesnesinin zamanında temizlenmemesinden kaynaklanan bellek sızıntısı.

Genellikle bazı nesneler koleksiyona yüklenir.Kullanılmadığında, ilgili nesnelere artık referans verilmemesi için koleksiyonu zamanında temizlemeyi unutmamalısınız.

16. Görüntü yükleme çerçeveleri nelerdir? Onların arasındaki fark ne? (Bu da gereklidir)

ImageLoader:

avantaj:

İndirme ilerleme durumunu izleme desteği;

Görüntü kaydırma sırasında resim yükleme duraklatılabilir;

Varsayılan olarak birden fazla bellek önbellekleme algoritması uygulayın Bu görüntü önbellekleri, önbellekleme algoritmalarıyla yapılandırılabilir, ancak ImageLoader varsayılan olarak en büyük boyut, ilk önce sil, en az sil, en az kullanılan, ilk önce ve en çok silme gibi daha fazla önbellek algoritması uygular. Uzun ilk silme vb .;

Yerel önbellek dosyası adı kural tanımını destekleyin;

Dezavantajları:

Dezavantajı, GIF resim yüklemesini desteklememesi ve önbelleğe alma mekanizmasının http önbelleğe alma ile iyi bir şekilde entegre olmamasıdır.Tamamen kendi önbelleğe alma mekanizmasıdır.

Picasso:

avantaj:

Kendi istatistiksel izleme işlevi ile, önbellek isabet oranı, kullanılan bellek boyutu, kaydedilen trafik vb. Dahil olmak üzere görüntü önbellek kullanımının izlenmesini destekler.

Öncelikli işlemeyi destekleyin

Görüntü boyutu hesaplaması tamamlanıp yüklenene kadar gecikmeyi destekleyin

Destek uçuş modu, eşzamanlı iş parçacığı sayısı ağ türüne göre değişir Cep telefonu uçuş moduna geçtiğinde veya ağ türü değiştiğinde, maksimum eşzamanlı iş parçacığı havuzunu otomatik olarak ayarlayacaktır.

"Yerel önbellek yok". Picasso'nun kendisi yerel önbelleğe alma yapmaz, ancak okhttp tarafından uygulanır.Bunun avantajı, görüntünün sona erme süresinin Response Header'da Cache-Control ve Expired isteyerek kontrol edilebilmesidir.

Dezavantajları:

GIF desteklenmediğinden, resimleri varsayılan olarak önbelleğe almak için ARGB_8888 biçimi kullanılır ve önbellek boyutu büyüktür.

Kayma:

avantaj:

Resim Önbelleği- > Medya önbelleği, Gif, WebP, küçük resim desteği. Hatta Video.

Öncelikli işlemeyi destekleyin

Etkinlik / Parça yaşam döngüsü ile uyumlu, trimMemory desteği

okhttp, Volley'i destekleyin. Glide, verileri varsayılan olarak, okhttp veya Volley ile kullanılabilen UrlConnection aracılığıyla alır. Gerçek ImageLoader ve Picasso, okhttp ve Volley'i de destekler.

Hafıza dostudur, önbellek daha küçüktür, resim varsayılan olarak ARGB888 yerine varsayılan RGB565'i kullanır

Dezavantajları:

Tanım zayıf, ancak ayarlanabilir

Fresk:

avantaj:

Resim, sanal makinenin yığın belleğinde değil, Android sisteminin anonim paylaşılan belleğinde depolanır, bu nedenle resim yüklemesi nedeniyle sıkıntıya neden olmaz ve ayrıca çöp toplayıcının Bitmap'i geri dönüştürmek için sık sık çağrılmasının neden olduğu arayüz gecikmesini azaltır ve performans daha yüksektir.

Görüntüleri bulanıktan net yüklemeye kadar destekleyen JPEG görüntülerin aşamalı olarak yüklenmesi

Resim, ImageView'da sadece resmin merkezinde değil, herhangi bir merkez noktasında görüntülenebilir.

JPEG görüntüsünün boyutu da sanal makinenin yığın belleğinde değil yerel olarak değiştirilir ve bu da OOM'yi azaltır

GIF resimlerinin görüntülenmesini çok iyi destekler

Dezavantajları:

Çerçeve büyüktür, bu da Apk'nin hacmini etkiler ve kullanımı zahmetlidir

17. Ağ çerçeveleri nelerdir? Onların arasındaki fark ne? (Bu da sorulacak)

Xutils

Bu çerçeve çok kapsamlıdır.Ağ istekleri, görüntü yükleme işlemleri, veri depolama ve görünüm açıklamaları için kullanılabilir.Bu çerçeveyi kullanmak çok uygundur ancak dezavantajları da çok açıktır.Bu projenin kullanılması projenin bu çerçeveye yanıt vermesine neden olacaktır. Bağımlılık çok ciddidir. Bu çerçevede bir sorun olduğunda, proje üzerinde büyük bir etkisi olacaktır.

OKhttp

Android geliştirmede, ağ istekleri yapmak için hazır api'yi doğrudan kullanabilirsiniz. Çalıştırmak için HttpClient, HttpUrlConnection kullanmaktır. Java ve Android programları için okhttp, senkronizasyonu ve asenkronizasyonu destekleyen yüksek performanslı bir http istek kitaplığını içerir ve okhttp ayrıca iş parçacığı havuzunu içerir, veri dönüşümünü içerir, parametrelerin kullanımını ve hata işlemeyi içerir. API kullanımı daha uygundur. Ancak bunu projede kullandığımızda, daha sorunsuz kullanabilmemiz için yine de kendi kendimize bir kapsülleme katmanı yapmamız gerekiyor.

Voleybol

Volley, resmi olarak Google tarafından piyasaya sürülen küçük ve mükemmel bir eşzamansız istek kitaplığıdır. Çerçeve oldukça genişletilebilir. HttpClient, HttpUrlConnection ve hatta OkHttp'yi destekler ve Volley ayrıca ImageLoader'ı da içerir, böylece isterseniz ona ihtiyacınız bile kalmaz Resim yükleme çerçevesini kullanın, ancak bu işlev bazı özel resim yükleme çerçeveleri kadar güçlü değildir.Basit ihtiyaçlar için kullanılabilir ve daha karmaşık ihtiyaçlar için özel bir resim yükleme çerçevesine hala ihtiyaç vardır. Volley ayrıca, büyük veriyi desteklememek gibi kusurlara da sahiptir, bu nedenle dosya yüklemek için uygun değildir. Bununla birlikte, Volley'in tasarımının asıl amacı, az miktarda veri içeren sık ağ talepleri için doğmuştur.

Güçlendirme

Retrofit, varsayılan olarak Square tarafından kapsüllenen OkHttp tabanlı RESTful ağ isteği çerçevesidir. RESTful, bir standart değil, popüler bir API tasarım stilidir. Retrofit'in kapsüllemesinin çok güçlü olduğu söylenebilir. Bir dizi tasarım modeli içerir. İstekleri doğrudan açıklamalar yoluyla yapılandırabilirsiniz. Farklı http istemcileri kullanabilirsiniz. Varsayılan http olsa da, verileri serileştirmek için farklı Json Dönüştürücüler kullanabilirsiniz. Retrofit + OkHttp + RxJava + Dagger2'yi kullanarak RxJava için destek sağlayın, nispeten modaya uygun bir çerçeve kümesi olduğu söylenebilir, ancak nispeten yüksek bir eşiğe ihtiyacı vardır.

Voleybolu VS OkHttp

Volley'in avantajı, paketlemenin daha iyi olmasıdır ve OkHttp'yi kullanmak için yeniden paketleme yapmak için yeterli yeteneğe sahip olmanız gerekir. OkHttp'nin avantajı daha yüksek performansında yatmaktadır OkHttp NIO ve Okio'ya dayandığından, performansta Volley'den daha hızlıdır. Hem IO hem de NIO Java'daki kavramlardır.Sabit diskten veri okursam, ilk yol, veriyi okuduktan sonra programın işleme devam etmesini beklemektir.Bu en basit olanı, aynı zamanda IO engelleme olarak da adlandırılır. Birincisi, siz kendinizinkini okursunuz, daha sonra program çalıştırılır ve veriler işlendiğinde beni bilgilendirirsiniz ve ardından geri aramayı işlersiniz. İkinci yöntem, engellemeyen NIO'dur, bu nedenle NIO kesinlikle IO'dan daha iyi performansa sahiptir ve Okio, Square tarafından IO ve NIO'ya dayalı olarak geliştirilen daha basit ve daha verimli bir veri akışı kitaplığıdır. Teoride, Volley ve OkHttp karşılaştırılırsa, Volley kullanmaya daha meyillidir, çünkü Volley ayrıca OkHttp'nin dahili olarak kullanılmasını destekler, bu nedenle OkHttp'nin performans avantajı ortadan kalkar ve Volley'in kendi paketinin kullanımı daha kolaydır ve daha iyi ölçeklenebilirliğe sahiptir.

OkHttp VS Güçlendirme

Hiç şüphe yok ki Retrofit, varsayılan olarak OkHttp'ye göre kapsüllenir, bu bakımdan bir karşılaştırma yoktur, Retrofit kesinlikle ilk tercihtir.

Voleybolu VS Güçlendirme

Bu iki kitaplık iyi bir şekilde paketlenmiştir, ancak Retrofit daha kapsamlı bir şekilde ayrıştırılmıştır, özellikle Retrofit 2.0, Jake önceki 1.0'ın mantıksız tasarımını birçok kez yeniden düzenlemiştir ve sorumluluklar daha alt bölümlere ayrılmıştır ve Retrofit varsayılan olarak OkHttp kullanır. , Performans da Volley'den daha üstündür ve projenizde RxJava kullanılıyorsa Retrofit kullanılmalıdır. Dolayısıyla, bu iki kitaplık ile karşılaştırıldığında, Retrofit'in daha fazla avantajı vardır.İki çerçevede ustalaşabiliyorsanız, önce Retrofit kullanılmalıdır. Ancak Retrofit eşiği Volley'den biraz daha yüksek, prensiplerini ve çeşitli kullanımlarını anlamak biraz çaba gerektiriyor, biraz bilginiz varsa, ticari projelerde Voleybolu kullanmanız önerilir.

18. Hangi tasarım modellerine aşinadır?

Elbette gerçek durumunuza göre cevap verin, ne kadar çok olursa o kadar iyidir. Örneğin, ben bir tekil kalıbına aşinayım.

19. Üç seviyeli önbellek (bu bazen sorar)

Ağ yükleme, öncelikli yükleme yok, yavaş hız, trafik kaybı

Yerel önbellek, ikinci öncelikli yükleme, hızlı

Önbellek, öncelikli yükleme, en hızlı

Android Uygulamasını ilk kez yüklediğinizde, resmi ağ etkileşimi yoluyla almalısınız.Bundan sonra resmi yerel SD karta ve dahili belleğe kaydedebiliriz.APP'yi çalıştırırken, dahili bellekteki resim önbelleğine erişmeye öncelik vereceğiz.Dahili bellekte yoksa, yerel olarak yükleyeceğiz. SD kartta resim ve sonunda ağa erişmeyi seçin

20. Android'in sunucuyla etkileşim kurma biçiminde simetrik şifreleme ve asimetrik şifreleme nedir?

Simetrik şifreleme Yani, verileri şifrelemek ve şifresini çözmek için aynı anahtar kullanılır ve bu alandaki algoritma DES'dir.

Asimetrik şifreleme , Şifreleme ve şifre çözme farklı anahtarlar kullanır. Verileri göndermeden önce, bir genel anahtar ve özel bir anahtar oluşturmak için önce sunucuyla anlaşmanız gerekir.Genel anahtarla şifrelenen verilerin şifresi özel anahtarla çözülebilir ve bunun tersi de geçerlidir. Bu alandaki algoritma RSA'dır. Hem ssh hem de ssl tipik asimetrik şifrelemedir.

Makalenin sonunda:

Sadece anlamanız değil, aynı zamanda onları iyi ifade edebilmeniz için de ihtiyacınız olan bazı şeyler vardır, böylece görüşmeyi yapan kişi, görüşmede sorulması gereken bir soru olan İşleyici mekanizması gibi. Bazı belirsiz noktalar var, belki sadece röportajda yaşıyor, gerçek işte hiç kullanmayacaksın ama ne olduğunu bilmelisin.

Altın, gümüş ve gümüş röportajları için en yoğun sezon olmak üzere. Herkes favori bir iş bulmak için bu fırsatı değerlendirmeyi umuyor. Ama ne olursa olsun, görüşmenin boyutu ne olursa olsun, görüşmeci tarafından istismar edilmekten kaçınmak istiyorsanız, görüşme sorularını en üst düzeye çıkarmalı ve kapsamlı bir hazırlık yapmalısınız.Elbette buna ek olarak barış zamanında da sağlam bir temel atmalısınız. Yani görüşmeyi yapan kişi kendi bilgisine nasıl girerse girsin, bununla başa çıkabilirsiniz ~

Röportaj: Tam bir röportaj için hazırlanmazsanız, bu zaman kaybı olur ve kendinize karşı sorumsuz olursunuz!

Golden 9th Silver ve 10th röportaj sezonunda acele edin ve röportajınız için hazırlanın!

Son olarak, buradaki editör, yukarıdaki teknik sistem şemalarıyla ilgili düzinelerce set koleksiyonunu paylaşıyor. Tencent, Toutiao, Ali, Meituan ve diğer şirketlerden 19 yıl içinde mülakat soruları , Teknik noktaları video ve PDF olarak düzenledi (aslında beklenenden çok daha fazla enerji harcadı), Bilgi bağlamı + birçok ayrıntı , Sınırlı alan nedeniyle, işte resim şeklinde bir parçası.

ve ayrıca Gelişmiş mimari teknolojisi gelişmiş zihin haritası, Android geliştirme röportajı özel materyalleri , Herkesin ileri seviyeyi geliştirmeyi öğrenmesine yardımcı olmak için gelişmiş gelişmiş çerçeve materyalleri ve ayrıca internette öğrenmek için materyal aramak için herkesin zamanından tasarruf sağlar ve ayrıca birlikte öğrenmek için arkadaşlarla paylaşılabilir.

[Android geliştirmeyle ilgili temel bilgilerle ilgili notlar]

[Android zihin haritası (beceri ağacı)]

[Android temel ileri teknoloji PDF belgesi, BAT görüşmesindeki gerçek soruların analizi]

[Android Advanced Architecture Video Öğrenme Kaynakları]

Android Tanıtım Videosu alıp öğrendikten sonra, daha da güçlü hale geliyor! BATJ fabrikasına girin ve benzeri (hazırlık)! Günümüzde İnternetin soğuk olduğu söyleniyor. Aslında, yanlış arabaya bindiğinizden ve daha az (beceri) giydiğinizden başka bir şey değil. Doğru arabaya binerseniz ve kendi teknik yeteneğiniz yeterince güçlüyse, şirketin değişim maliyeti yüksek olacaktır. Sadece son iş Curd'u ortadan kaldırmak için! Günümüzde piyasada genç programcılar akınına uğramaktadır. Bu eğitim seti 1-6 yaş arası Android geliştirme mühendislerine yöneliktir. Darboğaz dönemindedirler. Gelecek yıl maaş artışlarını aşmak isteyenler, ileri düzey Android orta ve kıdemli, mimarlar daha da önemlidir Sudaki bir balık gibi, çabuk alın!

[Android gelişmiş öğrenme videosu], [Android mülakat hilelerinin tam seti PDF], [Android geliştirme temel bilgi notları] özel mesajla [Android] ücretsiz olarak elde edilebilir!

İş değiştirmeyi düşündün mü? İşte Android mimarlarının görüşmeler için bazı önerileri ve hazırlıkları var
önceki
Öne çıkan! Android büyük OPPO mülakat soruları ve deneyim özeti
Sonraki
Android LayoutManager üst düzey oyuncular, süslü formların farkına varın
Android programcı sorunu: farklı geliştirme aşamalarında nasıl ilerlenir?
Android geliştiricilerinin 2020'de tanrı olmasına giden yol! Bu temel becerileri öğrenin
Mobil programcıların iş değiştirmeleri ve mülakat başarı oranını% 80 artırmaları için mülakat sorularına nasıl hazırlanılır?
2020'de ne öğrenmeli? Android beceri haritası yükselişte
Android mülakat deneyimi için gerekli beceri rezervinin detaylı açıklaması, teklifi aldı
Teknik yön konusunda kafanız mı karıştı? Kıdemli mobil geliştiriciler, Android geliştirmenin gelecekteki yönü hakkında konuşuyor
Mülakat ve mülakat soruları öncesindeki Android mülakat engellerini ortadan kaldırın.
Bu, üst düzey üreticilerin Android mühendisleri için gerekli beceriler sistemi + öğrenme rotası koleksiyonudur
Ayrıcalıklı günlük Sırbistan'da Çinli uzmanlar sadece tavsiyelerle ilgilenmiyor
Wuhan'da havai fişekler var
Xi Jinping, çok kısa bir süre içinde özel bir zirvede Çin'in
To Top