Java+Android+數(shù)據(jù)結(jié)構(gòu) 基礎(chǔ)知識(shí)總結(jié) [一]

子曰:“父母之年熟吏,不可不知也距糖。一則以喜玄窝,一則以懼∩隹穑”《論語》
見過很多的人為了家庭放棄工作哆料。你是螺絲釘,你可能一輩子就在一個(gè)地方吗铐,離開了你的地方东亦,就成了廢鐵。 你是金子唬渗,鉆石呢典阵??
面試的時(shí)間一般是半個(gè)小時(shí)到一個(gè)小時(shí)左右镊逝,時(shí)間很是寶貴壮啊,建議只做自己最擅長的那一部分
基礎(chǔ)知識(shí)要配合著項(xiàng)目經(jīng)驗(yàn)來進(jìn)行講述,這樣才會(huì)給面試官最大的尊重撑蒜,也給自己一個(gè)發(fā)光的機(jī)會(huì)

Java基礎(chǔ)
TCP (Transmission Control Protocol歹啼,傳輸控制協(xié)議)

1. 一種面向連接的、可靠的座菠、基于字節(jié)流的傳輸層通信協(xié)議
2. TCP層是位于IP層之上狸眼,應(yīng)用層之下的中間層
3. 三次握手
    1. 客戶端發(fā)送SYN(SEQ=x)報(bào)文給服務(wù)器端,-> SYN_SEND浴滴。
    2. 服務(wù)器端收到SYN報(bào)文拓萌,回應(yīng)一個(gè)SYN (SEQ=y)ACK(ACK=x+1)報(bào)文,->SYN_RECV升略。
    3. 客戶端收到服務(wù)器端的SYN報(bào)文微王,回應(yīng)一個(gè)ACK(ACK=y+1)報(bào)文,-> Established(已建立的)品嚣。
    4. 這一過程與打電話很相似炕倘,先撥號(hào)振鈴,等待對(duì)方摘機(jī)說“喂”翰撑,然后才說明是誰罩旋。在一個(gè)TCP連接中,僅有兩方進(jìn)行彼此通信额嘿。

4. 握手以后,進(jìn)行傳(yue)遞(hui)
5. 可靠性保證
    1. 應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊(報(bào)文)
    2. 當(dāng)TCP發(fā)出一個(gè)段后劣挫,它啟動(dòng)一個(gè)定時(shí)器册养,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn)压固,將重發(fā)這個(gè)報(bào)文段球拦。
    3. 既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段的到達(dá)也可能會(huì)失序坎炼。(自動(dòng)調(diào)整順序)
    4. .TCP還能提供流量控制(緩沖區(qū)大欣颉)。

UDP (User Data Protocol谣光,用戶數(shù)據(jù)報(bào)協(xié)議)

1. 不面向連(fu)接(ze)
2. 全力發(fā)送
3. 一個(gè)可以給多個(gè)發(fā)送
4. 不保證順序
5. 數(shù)據(jù)報(bào)模式
6. 丟包   [ping就是用的這個(gè)檩淋,所以網(wǎng)不好就丟包]
  • 新浪面試題

寫一個(gè)函數(shù),計(jì)算兩個(gè)文件的相對(duì)路徑的遞歸算法

String aPath = "/P/y/z/a/b/a/g/e.php";
String bPath = "/P/y/z/a/b/a/g/c.php"; 
情況的時(shí)候貌似不對(duì)萄金。 
代碼可改成: 
public String pathARelativePathB(String pathA, String pathB, int i) {
    // A相對(duì)于B ../g/e.php
    if (pathA.contains(pathB)) {
        if (i == 1) {
            return pathA.replaceAll(pathB + "/", "");
        } else {
            StringBuffer sb = new StringBuffer();
            for (int j = 1; j < i; j++)
            sb.append("../");
            return sb.append(pathA.replaceAll(pathB + "/", "")).toString();
        }
    } else {
        return pathARelativePathB(pathA, pathB.substring(0, pathB.lastIndexOf("/")), ++i);
    }
}
  • 編寫一個(gè)函數(shù)用來實(shí)現(xiàn)輸入任意一個(gè)字符串蟀悦,實(shí)現(xiàn)對(duì)該字符串進(jìn)行反轉(zhuǎn)

    1. 轉(zhuǎn)換成char數(shù)組,倒著輸出即可[英文數(shù)字均可] [簡(jiǎn)單(la)粗暴(ji)]
    2. 如果是中文串氧敢,編碼問題就不是那么善良了
    3. 這時(shí)候日戈,使用字符串截取類,倒著一個(gè)一個(gè)的截取即可
    4. 也可以使用整個(gè)串長度的For循環(huán)孙乖,輸出指定位置的字符即可
    5. 小技巧split("")可以讓整個(gè)串按字符分割
    6. 數(shù)據(jù)結(jié)構(gòu)高手的想法浙炼,整個(gè)串分割后壓入棧中,進(jìn)行彈出就是反轉(zhuǎn)
    7. 首尾交換法 比如原長度是10唯袄,那么 [0][10] | [1][9]進(jìn)行交換弯屈,for循環(huán)只用跑 1/2,效率也是非吃铰瑁可觀
    8. 歡迎大家對(duì)以上算法進(jìn)行效率排序季俩,可以在公眾號(hào)中給我留言

Android 基礎(chǔ)

  • 場(chǎng)景 [Context]

    1. 源碼分析 Activity、Service梅掠、Application都是Context的子類
    2. 分類 Activity ApplicationContext
    3. 兩個(gè)有什么區(qū)別酌住,需要顯示東西的時(shí)候,就用Activity中的Context就可以阎抒,不需要顯示的時(shí)候酪我,那么使用ApplicationContext就行,當(dāng)然且叁,注意對(duì)象的引用都哭,發(fā)生內(nèi)存泄漏也不好,軟引用空指針了也不好
    4. 場(chǎng)景逞带,就是前臺(tái)小蜜要不停的穿梭在老板的辦公室欺矫,前臺(tái)等地方,所以不同的場(chǎng)景下展氓,小蜜能做的事情也不同
    5. 所以穆趴,要分場(chǎng)合的使用你的小蜜
  • 四大組件

    1. 活動(dòng)(Activity)
      1. 生命周期方法調(diào)用,四種啟動(dòng)方式
    2. 服務(wù)(Service)
      1. 生命周期遇汞,綁定方法
    3. 廣播接收者(BroadcastReceiver)
      1. 動(dòng)態(tài)注冊(cè)(onDestroy中解綁)和靜態(tài)注冊(cè)的區(qū)別未妹,優(yōu)先級(jí)
      2. 廣播分類 有序(優(yōu)先級(jí)大的有權(quán)利截?cái)鄰V播)/無序
      3. 廣播分類 本地/全局
      4. 廣播分類 Sticky 粘性廣播簿废,延遲廣播 權(quán)限 android.permission.BROADCAST_STICKY
      5. 粘性廣播保證后注冊(cè)的接收者也可以接收到,但只保持最后一條廣播
      6. 粘性廣播已經(jīng)很少用
    4. 內(nèi)容提供者(Content Provider)
      1. Uri格式 [scheme:] [//host:port] [path] [?query][#fragment]
      2. 當(dāng)外部應(yīng)用需要對(duì)ContentProvider中的數(shù)據(jù)進(jìn)行添加络它、刪除族檬、修改和查詢操作時(shí),可以使用ContentResolver類來完成化戳,要獲取ContentResolver對(duì)象单料,可以使用Context提供的getContentResolver()方法。
      3. 怎么描述他的功能呢迂烁,就是給別人開的后門吧
5.  內(nèi)容觀察者(ContentObserver)(提供者的小弟)
    1.  觀察短信看尼、通話記錄、是否飛行模式
    2.  需要頻繁檢測(cè)的數(shù)據(jù)庫或者某個(gè)數(shù)據(jù)是否發(fā)生改變盟步,如果使用線程去操作藏斩,很不經(jīng)濟(jì)而且很耗時(shí) 
    3.  在用戶不知曉的情況下對(duì)數(shù)據(jù)庫做一些事件,比如:悄悄發(fā)送信息却盘、拒絕接受短信黑名單等
    4.  比如狰域,只接受指定用戶的信息
    5.  建議和Handler配合使用更新UI
  • OOM [out of memory 內(nèi)存溢出]

    1. 一般一個(gè)應(yīng)用使用的內(nèi)存不能超過默認(rèn)值 32M ,小米150M..
    2. 國內(nèi)的黑科技APP就不要吐槽了黄橘,大的能占你的手機(jī) 1G 運(yùn)存
    3. 為什么能占這么多還不OOM兆览,解決方式很多
    4. 保持不重要的內(nèi)存進(jìn)行軟引用,讓系統(tǒng)的gc自己動(dòng)起來
    5. 大圖加載(10M以上的大圖) 得到bitmap之前先利用BitmapFactory.Options的inSampleSize的值得到壓縮圖片塞关。
    6. 數(shù)據(jù)需要的時(shí)候再進(jìn)行加載
    7. LruCache 設(shè)計(jì)自己的緩存去 數(shù)據(jù)單獨(dú)進(jìn)行管理 底層使用LinkedHashMap在使用一個(gè)對(duì)象的時(shí)候就把這個(gè)對(duì)象移動(dòng)到隊(duì)列頭部抬探,而且線程安全
    8. AsyncTask 它封裝了Thread和Handler
  • 內(nèi)存泄漏 (占用的內(nèi)存只增不減)-> 合理的使用你的內(nèi)存

先簡(jiǎn)單的泄漏一下
第一種 [JAVA] 泄漏

1. 創(chuàng)建一百個(gè)對(duì)象
2. 把這一百個(gè)對(duì)象放入集合中,放入后把原對(duì)象引用置為空
3. 使用完集合后帆赢,這些對(duì)象還是會(huì)繼續(xù)存在小压,造成泄漏
4. 將對(duì)象也置為空,系統(tǒng)就會(huì)自動(dòng)GC

第二種 [上下文的泄漏]

1. 靜態(tài)類中使用的Context
2. 如果靜態(tài)類的生命周期長于Context生命周期 -> 泄漏     
3. 可以使用ApplicationContext 在Application中添加一個(gè)靜態(tài)工廠方法椰于,返回ApplicationContext.
4. Handler 造成的內(nèi)存泄漏 Handler怠益、Message 和 MessageQueue 都是相互關(guān)聯(lián)在一起的
5. 如果Handler還有沒處理完的東西Activiy已經(jīng)被關(guān)閉了
6. Handler 中還繼續(xù)持有這個(gè) Activity 的引用 -> 泄漏
7. 解決方案,Handler 對(duì) Activity 使用軟引用
8. 使用前判斷非空
    1. 原因瘾婿,在內(nèi)存中有一個(gè)無法訪問也無法清除的對(duì)象
    2. 危險(xiǎn)蜻牢,小的泄漏無所謂,每次泄漏一點(diǎn)偏陪,時(shí)間久了抢呆,手機(jī)的內(nèi)存就被啃光了,明顯感覺到卡頓和發(fā)熱的時(shí)候笛谦,早就積少成多了
    3. 避免這些問題是高端開發(fā)人員的核心技能之一
    4. 盡量避免使用 static 成員變量抱虐,這些東西和APP生命周期一樣,極其浪費(fèi)系統(tǒng)資源
    5. 將內(nèi)部類改為靜態(tài)內(nèi)部類
    6. 靜態(tài)內(nèi)部類中使用弱引用來引用外部類的成員變量
    7. Handler 更新UI使用弱引用
  • ANR [Application Not Responding]

    1. 喜歡玩舊手機(jī)的人揪罕,經(jīng)程萋耄看到這個(gè)
    2. 經(jīng)常會(huì)問你,xx失去響應(yīng)好啰,該不該把它關(guān)了
    3. Activity 5s broadCastReceiver 10s Service 20s
    4. 為什么轩娶,你卡到UI線程了
    5. 好的應(yīng)用是不允許這個(gè)問題出現(xiàn)
    6. 所以,[耗時(shí)/聯(lián)網(wǎng)/數(shù)據(jù)庫] 等操作就放到工作服務(wù)和子線程中
    7. 最好辦法框往,異步數(shù)據(jù)處理鳄抒,多用緩存機(jī)制
    8. 微小的卡頓保持在100-200ms中,放心沒人發(fā)現(xiàn)
    9. 使用進(jìn)度條來保持耗時(shí)的不尷尬
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末椰弊,一起剝皮案震驚了整個(gè)濱河市许溅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秉版,老刑警劉巖贤重,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異清焕,居然都是意外死亡并蝗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門秸妥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滚停,“玉大人,你說我怎么就攤上這事粥惧〖耄” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵突雪,是天一觀的道長起惕。 經(jīng)常有香客問我,道長挂签,這世上最難降的妖魔是什么疤祭? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮饵婆,結(jié)果婚禮上勺馆,老公的妹妹穿的比我還像新娘。我一直安慰自己侨核,他們只是感情好草穆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搓译,像睡著了一般悲柱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上些己,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天豌鸡,我揣著相機(jī)與錄音嘿般,去河邊找鬼。 笑死涯冠,一個(gè)胖子當(dāng)著我的面吹牛炉奴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛇更,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞻赶,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了派任?” 一聲冷哼從身側(cè)響起砸逊,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤裆针,失蹤者是張志新(化名)和其女友劉穎罢绽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體类早,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豆混,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年字旭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崖叫。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遗淳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出心傀,到底是詐尸還是另有隱情屈暗,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布脂男,位于F島的核電站养叛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宰翅。R本人自食惡果不足惜弃甥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汁讼。 院中可真熱鬧淆攻,春花似錦、人聲如沸嘿架。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耸彪。三九已至伞芹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唱较。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工扎唾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人南缓。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓稽屏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親西乖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android Studio JNI流程首先在java代碼聲明本地方法 用到native關(guān)鍵字 本地方法不用去實(shí)現(xiàn)...
    MigrationUK閱讀 11,859評(píng)論 7 123
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,112評(píng)論 25 707
  • 內(nèi)存管理的目的就是讓我們?cè)陂_發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問題坛增。內(nèi)存泄漏大家都不陌生了获雕,簡(jiǎn)單粗俗的講,...
    宇宙只有巴掌大閱讀 2,363評(píng)論 0 12
  • 8月19日,臨沂市羅莊區(qū)發(fā)生一起電信詐騙案罢艾,18歲的準(zhǔn)大學(xué)生徐玉玉被他人以發(fā)放助學(xué)金為由楣颠,通過銀行ATM機(jī)轉(zhuǎn)賬的方...
    長弓心悅閱讀 286評(píng)論 0 0
  • 文/夜奔 “幾十年前,江湖上有位奇人咐蚯,他的武功出神入化童漩,連戰(zhàn)當(dāng)時(shí)一百零八位高手而毫發(fā)無損,但在此后春锋,他便失蹤了矫膨,仿...
    一夜星辰閱讀 822評(píng)論 0 0