android一些面試常見的總結
1.事件分發機制
將點選事件MostionEvent,向某個View進行傳遞並得到最終的處理,這個傳遞的過程就是事件分發,
預設情況下:一個傳遞的過程就是從Activity--ViewGroup--View,由上向下進行傳遞,如果沒有人進行處
理,然後會從View向上進行回傳.
事件分發機制主要是為了處理事件衝突。
比如在專案當中ScrollView中巢狀ListView我們 在合適的使用情況下看是走ListView還是ScrollView當我們攔截事件一種是父view不攔截,另一種是子view請求不攔截事件當我們滑動listview的時候向下滑當ListView的條目第0個在頂端那我們就可以判斷一下走ScrollView,當手勢想上滑動的時候最後一個顯示的時候這樣我們就不讓ListView不攔截事件,走ScrollView事件
2.三級快取
三級快取分為記憶體快取、磁碟快取、網路快取,我們在載入圖片的時候,首先從記憶體中讀取,如果記憶體中沒有,然後從磁碟中讀取,如果磁碟中沒有,從網路進行下載,把下載的圖片載入到記憶體中和磁碟中各一份,從記憶體中讀取圖片,因為手機的記憶體有限,不能載入過多的圖片,如果載入過多會導致OOM,所以從記憶體快取使用LRUcache,它會將強引用物件放在LinkedHashMap中,當快取資料大小達到預定值的時候,會使用LRUcache在該集合中比較少使用的物件從記憶體中移除然後把新的圖片載入到隊尾.
3.動態許可權
從安卓6.0之後,為了保護使用者的隱私和安全,google推薦了動態許可權,當用戶授權的時候才可以獲取.處理過程:首先檢測使用者是否授權,如果沒有會提示使用者授權,如果使用者拒絕,我們會引導使用者去開啟許可權,如果使用者點選不在提示,為了使用者點選按鈕無響應,我們會自定義提示框,來提示使用者去授權.
4.觀察者設計模式
這種模式就是當目標資料發生改變的時候,與之對應的觀察者物件的資料也會跟著一起改變,讓其響應這種變化
優點:資料層和邏輯層實現解耦合,可以定義一種穩定的觸發機制
缺點:如果被觀察者有多個間接的觀察者,會消耗更多的時間,如果觀察者與被觀察者迴圈依賴,最終會導致系統崩潰.
它的使用場景:比如廣播,遊戲,聊天,listviw通知資料發生變化這些都是觀察者設計模式
5.HashMap理解
HashMap主要是用陣列來儲存資料的,以鍵值對進行儲存的,底層是一個雜湊陣列,然後他的構造,有兩個引數,一個容量大小和載入因子,裡面會有一個閥值,就是單容量*載入因子大於閾值的時候,hashMap就進行擴容,擴容它會新建一個數組,把原有的值給copy新的陣列,重新計算位置,這樣它會消耗效能,我們需要對它進行一個優化,重新預估.
我們都知道它在儲存的時候會對key進行雜湊運算,雜湊運算會有重複的雜湊值,對於雜湊值的衝突,HashMap採用連結串列來解決的Entry,就是HashMap儲存資料所用的類,它擁有的屬性如下
final K key;
V value;
final int hash;
Entry<K,V> next;
next就是為了雜湊衝突而存在的。比如通過雜湊運算,一個新元素應該在陣列的第10個位置,但是第10個位置已經有Entry,將新加的元素也放到第10個位置,將第10個位置的原有Entry賦值給當前新加的 Entry的next屬性。陣列儲存的是連結串列,連結串列是為了解決雜湊衝突的
(問:“你用過HashMap,你能跟我說說它嗎?”
答:“當然用過,HashMap是一種<key,value>的儲存結構,能夠快速將key的資料put方式儲存起來,然後很快的通過get取出來”,然後說“HashMap不是執行緒安全的,
HashTable是執行緒安全的,通過synchronized實現的。HashMap取值非常快”等等。這個時候說明他已經很熟練使用HashMap的工具了。)
6.Handler機制原理
Handler在android開發中可謂隨處可見,Handler主要用於非同步訊息的處理:當發出一個訊息之後,首先進入一個訊息佇列,一個Handler允許傳送和處理Message和Runable物件,UI主執行緒會自動分配一個Looper(訊息輪詢器),每個Looper中封裝著MessageQueue(訊息佇列),遵循先進先出原則。Looper負責不斷的從自己的訊息佇列裡取出隊頭的任務或訊息執行。一般是在子執行緒執行完耗時操作之後,通過Handler的sendMessage或post方法將Message和Runable物件傳遞給MessageQueue
6.1 Android中為什麼主執行緒不會因為Looper.loop()裡的死迴圈卡死?
對於執行緒既然是一段可執行的程式碼,簡單說就是在主執行緒的MessageQueue沒有訊息時,便阻塞在loop的queue.next()中的nativePollOnce()方法裡,此時主執行緒會釋放CPU資源進入休眠狀態,直到下個訊息到達或者有事務發生,所以說,主執行緒大多數時候都是處於休眠狀態,並不會消耗大量CPU資源
相關推薦
android一些面試常見的總結
1.事件分發機制 將點選事件MostionEvent,向某個View進行傳遞並得到最終的處理,這個傳遞的過程就是事件分發, 預設情況下:一個傳遞的過程就是從Activity--ViewGroup--View,由上向下進行傳遞,如果沒有人進行處 理,然後會從View向上進
PYTHON 一些基礎面試題目總結
外部 刪除一個文件 tel 信息 mpi seq break list 請求 PYTHON 一些基礎面試題目總結http://www.bieryun.com/1191.html1. Python是如何進行內存管理的?答:從三個方面來說,一對象的引用計數機制,二垃
測試工程師的一些面試題目(python)和總結
pat 實現 cci strong 表現 用法 工程 重點 性能 (一)說明 1、記錄自己面試測試工程師時遇到的一些編程題(python)。 2、回顧下面試的過程,做個總結。 (二)題目 1、輸入:JSON {"a":"aa","b":"bb",
C++ 複習要點、面試常見問題總結
本文總結一下C++面試時常遇到的問題。C++面試中,主要涉及的考點有: 關鍵字極其用法,常考的關鍵字有const, sizeof, typedef, inline, static, extern, new, delete等等 語法問題 型別轉換 指標以及指標和引用的區別 面向物件的相關
2018年秋招面試常見資料庫知識總結
MYAQL: 事務:事務是併發控制的基本單元,事務是一個操作序列,要麼都執行,要麼都不執行, 他是一個不可分割的工作單位,事務是維護資料庫一致性的單位。 四個ACID基本性質: 1.原子性:要麼都執行,要麼都不執行。 2.一致性:合法的資料才可以被寫入。 3.
2018年秋招面試常見Linux運維知識點總結
Linux中常見命令: ping命令:可測試網路是否通暢。ping命令使用的是網路層的ICMP協議,但從命令本身來看是屬於第七層應用層。 traceroute:電腦網路工具,可顯示資料包在IP網路經過的路由器的IP地址。 iostat命令可以檢視磁碟IO狀態。
2018年秋招面試常見python和資料結構知識點總結
python中的深拷貝和淺拷貝的定義: 在python中物件的賦值就是物件的引用,當建立一個物件把他賦值給另一個變數時,Python只是拷貝了物件的引用而已。 淺拷貝:拷貝了最外圍物件本身,內部的元素只是拷貝了一個引用而已,也就是隻複製物件,物件的引用不復制。
Android程式設計師的一些面試建議
前言 應大家的邀請,寫一篇關於Android面試相關的部落格,需要說明的是本文只針對Android應用開發,不針對rom開發以及逆向工程。我想面試對於程式設計師來說是很重要的一件事件,面試結果的好壞直接決定了能否進入某個公司以及以什麼級別和待遇進入某個公司。我參加面試的經驗並不多,但是以面試官的身份
【 專欄 】- 面試常見問題總結
面試常見問題總結 我是一個菜雞程式猿,但我有成為架構師的夢,所以我需要學會笨鳥先飛,厚積薄發。 秋招涼涼後,深受打擊,鬱鬱寡歡的我,葛優躺了好幾天,終於想明白了,查缺補漏,缺啥補啥,一心春招,不忘初心方得始終!程式猿,加油
Android 開發過程中平時遇到的一些問題及總結
相信大家都有面試的經歷,相對比面試官的問的一些問題其實都是基礎的知識,但就是一些基礎的知識我們也不是很完美的回答出來,我們也知道現在的開發人員很多,一家公司一個崗位就會有很多的開發者投遞,在那麼多開發者中你如何讓面試官很深的認識你,給面試官一個很深的印象,能讓他
邏輯迴歸的常見面試點總結
1.簡介 邏輯迴歸是面試當中非常喜歡問到的一個機器學習演算法,因為表面上看邏輯迴歸形式上很簡單,很好掌握,但是一問起來就容易懵逼。所以在面試的時候給大家的第一個建議不要說自己精通邏輯迴歸,非常容易被問倒,從而減分。下面總結了一些平常我在作為面試官面試別人和被別人面試的時候,經常遇到的一些問題。 2
Android高階開發工程師技術面試經驗總結
筆者前段時間參加了綠廠的Android高階開發工程師技術面試,總結一下,希望對即將參加技術面試的程式設計師能有所幫助。 首先面試官問的是專案相關的問題,如專案的實現、專案中
Android開發面試經——3.常見Java基礎筆試題
關注finddreams部落格:http://blog.csdn.net/finddreams/article/details/44403041 因為Androd使用Java語言來程式設計的,所以我們做Android開發全面的掌握Java基礎是必須的。在面試的過程中,我
Java異常常見面試問題總結
Java提供了一個健壯的、面向物件的方法來處理出現異常,稱為Java異常處理。 我以前寫過一篇長文章來介紹Java異常處理,今天我將列出一些重要的Java異常面試的問題及答案,希望對你們的面試有所幫助。 1.什麼是Java異常 答:異常是發生在程式執行過程中阻礙程式正常執行的錯誤事件。比如:
PHP面試常見演算法、函式總結
<?php //a=10,b=15 在不用第三個變數的前提下交換a b的值 //使用list(): $a = "fsdfds"; $b = "xiaorui"; list($a,$b) = array($b,$a); echo $a."-".$b; /
Android 年底面試總結及未來兩年規劃
面試是每個求職者永恆的話題,在這個資本寒冬的冬天,跳槽變得越來越謹慎了,但是,有時候為了一份自己滿意的工作還是要勇敢的跳出來。不管是因為和上級不和還是因為你要過圖輕鬆然後幡然悔悟,總之,打工者就是這麼回事。下面分享下年底面試的經歷。這個過程,真的不短,要準備
計算機筆試面試常見問題總結
0.前言 即將找工作,在這裡記錄一些常見的筆試面試問題。大部分附上網上好的博文的超連結。 1.演算法與資料結構 最大連續字串問題 Q:{1,-2,3,10,-4,7,2,-5,-9,8} A:18.見<Data Structures and Algorithm An
Android開發面試經——5.常見面試官提問Android題①
關注finddreams部落格: http://blog.csdn.net/finddreams/article/details/44513579 一般的面試流程是筆試完就接著是面試了,面試時技術經理會問你一些你工作中遇到的Android方面的問題,談談你所做的專案,和
機器學習面試常見題總結(持續更新)
1、邏輯迴歸(LR)損失函式為什麼使用最大似然估計而不用最小二乘法?連結:https://www.zhihu.com/question/65350200/answer/266277291首先,機器學習的損失函式是人為設計的,用於評判模型好壞(對未知的預測能力)的一個標準、尺子
雲端計算大資料類崗位部分常見面試問題總結
Hashing 適用範圍:快速查詢,刪除的基本資料結構,通常需要總資料量可以放入記憶體 基本原理及要點: hash函式選擇,針對字串,整數,排列,具體相應的hash方法。 碰撞處理,一種是open hashing,也稱為拉鍊法;另一種就是closed hashing,也稱開地址法,opened addre