2018年年底Android悲催的面試之路
熱文導讀 | 點選標題閱讀
作者:hackest
來源:http://www.apkbus.com/blog-144284-79332.html
本人近況
年底裁人了,一年半沒準備面試了,之前換也是內推的,在這個寒冬的冬天還經歷此遭,偏偏還趕上裁員
心態早已爆炸,大的環境不好,各位且幹且珍惜….
記錄下最近的面試經歷,整理下讓自己不斷進步!
題外話
我不知道一個人人性究竟可以壞到什麼程度,但是我最近親身經歷的確實是這樣,我一個安心想做技術的人跟你TMD HR部門的八竿子打不著,又何苦為難我呢? 之前有個公司的薪酬績效主管,邵X,只因為我在大會上頂撞了她一個問題,一味著揪著我的把柄不放,甚至特麼的為了少給我一個季度的績效不允許提前轉正,真的是壞透了,可能這就是職場,這就是江湖充滿爾虞我詐,真的人真是身不由己的,本想與世無爭安心踏實做技術,但是某些人卻看不得你的安寧。。。還是那句話,出來混的遲早要還的,望好自為之
右劃
這公司是在拉勾上投的,CEO號稱曾於位元組跳動,任視訊負責人,建立了頭條視訊APP。公司待遇15薪非常不錯,坐落於望京Soho對面的望京融科寫字樓
面試過程覺得自己挺失敗的沒有充分準備演算法再加上由於一年半沒有再面試過了,有點手生,好多應該答上來的問題都沒有答好,面試官確實是大牛,沒會的問題也稍微講解了下,不過深度確實蠻深的
印象比較深的幾個問題:Lru演算法,Binder機制,EventBus實現原理和為什麼不能跨程式,Handler如何在handleMessage方法攔截之前發出的message,手寫二分法查詢(沒準備直接跪了),後來讓我手寫冒泡,我覺得前面已經沒戲了(大致說了下雙重迴圈然後賦值也沒手寫),跨程式幾種方式,AIDL,handler機制,ThreadLocal實現原理(回答的很模糊,附上正確答案:每個Thread的物件都有一個ThreadLocalMap,當建立一個ThreadLocal的時候,就會將該ThreadLocal物件新增到該Map中,其中鍵就是ThreadLocal,值可以是任意型別。
在該類中,最重要的方法就是兩個:set()和get()方法。當呼叫ThreadLocal的get()方法的時候,會先找到當前執行緒的ThreadLocalMap,然後再找到對應的值。set()方法也是一樣。)系統是如何監聽ANR的(他說是androidframework層有一個單獨的程式),後來問到如何定位和排查我不小心說了blockCanary,他有追問了一下原始碼和原理我回答的也不是很好(應用發生卡頓,一定是在dispatchMessage中執行了耗時操作。我們通過給主執行緒的Looper設定一個Printer,打點統計dispatchMessage方法執行的時間,如果超出閥值,表示發生卡頓,則dump出各種資訊,提供開發者分析效能瓶頸。)
最後知道今天一定掛了,不過還是很有收穫的知道自己哪裡不足…
PS:明天去五道口面試鬥魚,希望能好好把握
鬥魚
拉勾投的鬥魚,據說最近在瘋狂裁人?只經歷了兩輪面試,一共面了兩個多小時,沒到HR,估計歇菜了
鬥魚有份筆試題,還是蠻簡單的隨便寫寫就ok,一面問的蠻詳細的,問的大致是看簡歷寫的東西問的,中規中矩,記憶比較深刻的是問了handlerThread原理,MVP模式(因為鬥魚目前的架構都是mvp),彈幕的實現原理和重疊問題(這個沒怎麼做過,回答的不是太好,而且之前也是直接用的B站開源的那個庫),Kotlin協程(這個沒用過,kt的掌握程度還只是入門階段),Retrofit+Okhttp+Rxjava在華為的好多手機會OOM是由執行緒數溢位引起如何解決?堆記憶體,棧記憶體理解,棧如何轉換成堆?記憶體洩漏是發生在堆記憶體還是棧記憶體?為什麼? BlockCanary原理?(第二次被問了!!!看來真要看看原始碼了)如何實現列印指定阻塞執行緒的方法名?LinkedHashMap與HashMap區別。。。
String a=“A” 與 String a = new String(“A”); 區別,分別儲存在哪個區域(這題有誤導嫌疑,第一個應該是常量區,堆疊都不是,第二個是棧)MutiDex 第一次ANR以及解決方式(答案參考:(https://www.jianshu.com/p/5a2e33a61ba2" target="_blank">https://www.jianshu.com/p/5a2e33a61ba2)
我覺得大部分的問題回答的還是不錯的,一面問了下薪資然後開始二面二面印象最深的是根據物件導向設計一個電梯系統,問題的關鍵點在於所有的屬性都跟電梯有關,跟人無關,樓層數是固定的常量…我當時設計跑偏了,總聯想到人然後去設計。。
結束以後沒有HR面,估計歇菜了…再接再厲吧…
Zenjoy
這家公司是獵頭推薦的,坐落於銀河SohoA座,辦公環境蠻不錯的,產品方向是做海外專案的,不過前後歷經將近三個小時的面試著實很令人崩潰,我喝了將近三瓶小瓶怡寶礦泉水才撐到了最後。。。
一面&二面
一面,二面問的太多了根本記不住,只記得幾個印象深刻的問題,
hashcode()和equals()的作用、區別、聯絡?
因為hashCode()並不是完全可靠,有時候不同的物件他們生成的hashcode也會一樣(生成hash值得公式可能存在的問題),所以hashCode()只能說是大部分時候可靠,並不是絕對可靠,所以我們可以得出:
1.equal()相等的兩個物件他們的hashCode()肯定相等,也就是用equal()對比是絕對可靠的。
2.hashCode()相等的兩個物件他們的equal()不一定相等,也就是hashCode()不是絕對可靠的。)Handler、Looper、MessageQueue、Thread關係?
一個執行緒可以有多個Handler例項,一個執行緒對應一個Looper,一個Looper也只對應一個MessageQueue,一個MessageQueue對應多個Message和Runnable。所以就形成了一對多的對應關係,一方:執行緒、Looper、MessageQueue;多方:Handler、Message。同時可以看出另一個一對一關係:一個Message例項對應一個Handler例項。Service 和 Activity如何互動, 如何在後臺下載任務, 並在Activity顯示進度?
https握手過程,如何實現資料加密?客戶端如何保證安全實現雙重證照校驗?請你設計一個登入功能,需要注意哪些安全問題?
Hashmap實現原理和如何解決雜湊碰撞(必問),Hashmap底層為什麼是執行緒不安全的?
HandlerThread原理以及對比單個New Thread的好處,優點以及試用場景?需要注意的是HandlerThread 是單個執行緒的不太適合執行網路的IO操作,要注意。。
EventBus實現原理
SurfaceView, TextureView區別?
從效能和安全性角度出發,使用播放器優先選SurfaceView。
1.在android 7.0上系統surfaceview的效能比TextureView更有優勢,支援物件的內容位置和包含的應用內容同步更新,平移、縮放不會產生黑邊。 在7.0以下系統如果使用場景有動畫效果,可以選擇性使用TextureView
2.SurfaceView優點及缺點優點:可以在一個獨立的執行緒中進行繪製,不會影響主執行緒,使用雙緩衝機制,播放視訊時畫面更流暢
缺點:Surface不在View hierachy中,它的顯示也不受View的屬性控制,所以不能進行平移,縮放等變換,也不能放在其它ViewGroup中。SurfaceView 不能巢狀使用
3.TextureView優點及缺點
優點:支援移動、旋轉、縮放等動畫,支援截圖
缺點:必須在硬體加速的視窗中使用,佔用記憶體比SurfaceView高,在5.0以前在主執行緒渲染,5.0以後有單獨的渲染執行緒。handler postDelay這個延遲是怎麼實現的?
Appliction啟動過程(App啟動過程)?
如何測量應用啟動時間?
1.可以通過程式碼打樁,計算啟動時間
2.命令
adb shell am start -W [packageName]/[packageName.launchActivity]
三面
根據之前獵頭的情報,三面是沒有技術相關的問題的,但是我這個不一樣,三面是總監面,首先先手寫一個演算法,不難,大致意思是:給你一個無序的陣列,又給了一個目標值,如果這個陣列其中有兩個數相加等於這個目標值,請你輸出對應兩個數的下標?
思路也蠻簡單的,直接Arrays.sort先排序 按升序來,然後雙重迴圈就可以了。。。寫完總監會問下單層for迴圈時間複雜度---
for(int i=1;i <=n;i++) //O(N);
for(int j=1;j <=i;j++) //O(N^2);
然後是
設計模式
Restful介面規範 我倆爭論了好半天
觀察者模式的原理
大概能記得的就是這些,總監可能比較注重基礎吧,自認為總體發揮一般可能一面和三面有一些瑕疵,主要二面有一些問題反問面試官也沒有給我相應的解釋比如那個handler postDelay怎麼delay的。。。前前後後面了將近三個小時,最後HR進來讓我回去等訊息,我知道估計涼涼了。。。
萊熙科技
這家公司我依稀記得去年年初考慮新機會的時候,那時候還在職,偷偷去面過,真心覺得面試官總是問一些我意想不到的問題,原本是要拒了的,可是Boss直聘上HR小姐姐一再要求要我再來一次,我就安排了今天的第三面(第一面已經拿到offer但是工資與預期差距較大,而且沒有太深的技術面再加上公司較小,與我預期的差距也很大就不寫了)依稀記得大概一年零八個月前吧,那時候他們還沒做海外專案,沒想到現在的產品居然是我上家公司的同類競品專案,他們做的叫LivU,Live Chat,線上視訊聊天~於是我決定去試試水。。。
一面
面試官還是1年零八個月之前的小哥,問題問的果然沒有辜負我對他的期望,因為產品做的都是一個路子還有用的框架也是Agora的,答起來輕車熟路,但是有好多讓我耳目一新的問題
使用GreenDao如何實現建立表、關聯表(一對一,一對多,多對多)?
Java呼叫kotlin 如何不用companion object{}包裹?
我解答他之前一直糾結的:在Java中呼叫kotlin中靜態的成員
如果一個類中所有的成員都是靜態成員,將class改為object就不用每個方法都用companion object{}包裹了。但是小哥說據說是最新kotlin加個註解可以不需要這個包裹?斷點續傳實現
代理模式和裝飾器模式區別?
java io 裝飾器模式。。當時問我用過的哪個包是裝飾器模式,我沒答上來!
App啟動速度優化?
Android 5.0-8.0新特性
Dalvik與ART區別?
程式保活?(偽命題)沒有真正意義的程式保活,都是白明單才OK
Retrofit CreateApi實現原理
二面
二面主要是總監面試,穿插了一些技術,不過總是暗示我來了需要加班啥的要我考慮清楚(我當然想你錢到位,啥都不是事)不過既然這麼說了,因為我問了一些公司流程方面的事,他回答是產品快速迭代,本身需求不可能流程化,只能產品做出來去試水,然後再推翻,如此往復計劃跟不上變化快,大致我想要的工作方式並不是這樣,可能有點分歧,也可能由於本來之前本來三面三個小時心態崩潰,可能態度沒有順著他來,So二面失敗,HR小姐姐招人的佣金也沒了。。
PS:其實內心還是蠻想去的,不過由於之前可能這種工作流程不太適合我,我剛跳出坑,他可能看到了我的猶豫和顧慮吧,所以技術過了也把我Pass了。。不過佛系的我已經無所謂了。。
站酷(ZCOOL)
這家公司是拉勾投的,面試官貌似是幫別的部門招聘,應該是做一個線上教育的專案,聽名字貌似叫“高高手”?遇到答的不好的題面試官都給予了細緻的講解,我覺得收穫蠻大。
具體的問題大概都有:
Retrofit 如何實現檔案(或圖片上傳)介面是如何定義的
大意要回答multipart/form-data 檔案上傳表單中
它會將表單的資料處理為一條訊息,以標籤為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳檔案。當上傳的欄位是檔案時,會有Content-Type來表名檔案型別;content-disposition,用來說明欄位的一些資訊;
由於有boundary隔離,所以multipart/form-data既可以上傳檔案,也可以上傳鍵值對,它採用了鍵值對的方式,所以可以上傳多個檔案。自定義View的屬性引用attr,styleable裡定義的名稱可否與系統已經存在的name重複?當然是不可以的,編譯器會預先檢查系統已經存在或者之前已經定義重複的
自定義View OnMeasure方法的三種Mode
UNSPECIFIED(未指定),父控制元件對子控制元件不加任何束縛,子元素可以得到任意想要的大小,這種MeasureSpec一般是由父控制元件自身的特性決定的。比如ScrollView,它的子View可以隨意設定大小,無論多高,都能滾動顯示,這個時候,size一般就沒什麼意義。
EXACTLY(完全),父控制元件為子View指定確切大小,希望子View完全按照自己給定尺寸來處理,跟上面的場景1跟2比較相似,這時的MeasureSpec一般是父控制元件根據自身的MeasureSpec跟子View的佈局引數來確定的。一般這種情況下size>0,有個確定值。
AT_MOST(至多),父控制元件為子元素指定最大參考尺寸,希望子View的尺寸不要超過這個尺寸,跟上面場景3比較相似。這種模式也是父控制元件根據自身的MeasureSpec跟子View的佈局引數來確定的,一般是子View的佈局引數採用wrap_content的時候。WebView攔截Url和cookie相關?網頁需要設定登入狀態等情形
Android中為什麼主執行緒不會因為Looper.loop()裡的死迴圈卡死?
Android應用程式的主執行緒在進入訊息迴圈過程前,會在內部建立一個Linux管道(Pipe),這個管道的作用是使得Android應用程式主執行緒在訊息佇列為空時可以進入空閒等待狀態,並且使得當應用程式的訊息佇列有訊息需要處理時喚醒應用程式的主執行緒。解決Android多執行緒訪問SQLite資料庫死鎖問題?database is locked
解決的辦法就是保持sqlite連線單例,保持單個SqliteOpenHelper例項,同時對所有資料庫操作的方法新增synchronized關鍵字。也就是說是讀寫資料庫時存在的同步問題,所以採用單例+同步鎖的方法,並且在每次資料庫操作後都關閉資料庫Android多程式解決單個程式記憶體分配?
微信貌似也用了拆分多程式去降低單個程式的heapSizeAndroid如何實現大圖載入?
WeakReference使用場景?
在Service裡實現下載如何重新整理UI?
Handler postDelay如何實現不阻塞UI執行緒?
1.postDelay()一個1秒鐘的MyTask任務、訊息進隊,MessageQueue開始阻塞,Looper阻塞,mBlocked為true,在enqueueMessage的if中將needWake = mBlocked。
2.然後post一個新的任務、訊息進隊,判斷現在A時間還沒到、正在阻塞,把新的任務插入訊息佇列的頭部(MyTask任務的前面),然後此時needWake為true呼叫nativeWake()方法喚醒執行緒。
3.MessageQueue.next()方法被喚醒後,重新開始讀取訊息連結串列,第一個訊息B無延時,直接返回給Looper;
4.Looper處理完這個訊息再次呼叫next()方法,MessageQueue繼續讀取訊息連結串列,第二個訊息A還沒到時間,計算一下剩餘時間(假如還剩9秒)繼續阻塞;
5.直到阻塞時間到或者下一次有Message進隊;
心得
這次面試還算是比較全面的面試吧,無論是深度和廣度問的都很深,面試之後收穫了自己的不足,感覺自己表現還可以,可能由於這個崗位是剛開始招的,時間週期會很長不知道會不會給offer… 不過有收穫就是好的~
整理下最近面試的幾個常見問題
RxJava 變換操作符 map flatMap concatMap buffer?
常用的變換操作符
map:【資料型別轉換】將被觀察者傳送的事件轉換為另一種型別的事件
flatMap:【化解迴圈巢狀和介面巢狀】將被觀察者傳送的事件序列進行拆分 & 轉換 後合併成一個新的事件序列,最後再進行傳送
concatMap:【有序】與 flatMap 的 區別在於,拆分 & 重新合併生成的事件序列 的順序與被觀察者舊序列生產的順序一致
flatMapIterable:相當於對 flatMap 的資料進行了二次扁平化
buffer:定期從被觀察者傳送的事件中獲取一定數量的事件並放到快取區中,然後把這些資料集合打包發射
裝飾器模式和代理模式區別
代理模式,注重對物件某一功能的流程把控和輔助。它可以控制物件做某些事,重心是為了借用物件的功能完成某一流程,而非物件功能如何。
裝飾模式,注重對物件功能的擴充套件,它不關心外界如何呼叫,只注重對物件功能的加強,裝飾後還是物件本身。
所以:
對於代理類,如何呼叫物件的某一功能是思考重點,而不需要兼顧物件的所有功能;
對於裝飾類,如何擴充套件物件的某一功能是思考重點,同時也需要兼顧物件的其它功能,因為再怎麼裝飾,本質也是物件本身,要擔負起物件應有的職責。
HashMap如何實現一個Key對應多個value?
其實就是Hashmap + ArrayList去實現的
例:
HashMap<Integer,ArrayList<String>> map = new HashMap<Integer,ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
list.add("abc");
list.add("xyz");
map.put(100,list);
Android中ClassLoader的種類&特點
BootClassLoader(Java的BootStrap ClassLoader)
用於載入Android Framework層class檔案。PathClassLoader(Java的App ClassLoader)
用於載入已經安裝到系統中的apk中的class檔案。DexClassLoader(Java的Custom ClassLoader)
用於載入指定目錄中的class檔案。BaseDexClassLoader
是PathClassLoader和DexClassLoader的父類。
因為遵循雙親委派模型,Android中的ClassLoader具有兩個特點:
類載入共享
當一個class檔案被任何一個ClassLoader載入過,就不會再被其他ClassLoader載入。類載入隔離
不同ClassLoader載入的class檔案肯定不是一個。舉個例子,一些系統層級的class檔案在系統初始化的時候被載入,比如java.net.String,這個是在應用啟動前就被系統載入好的。如果在一個應用裡能簡單地用一個自定義的String類把這個String類替換掉的話,將有嚴重的安全問題。
最後
即將入職某影視公司Android Leader崗,面試暫時告一段落,希望面試心得能幫到大家,祝大家好運~
想進阿里嗎?快加入我們的知識星球吧,如下:
如有收穫,歡迎「分享 」
「點贊」「評論 」
媽媽常教導我,讓我養成良好習慣。這樣長大才能成為一個有用的人。良好的習慣是尊敬師長這樣長大才能成為一個有用的人。良好的習慣是尊敬師長,愛護同學,對人有禮貌;是不粗心,做事情不拖拉;還是愛護公物,不浪費糧食。為什麼呢?因為擁有良好習慣,做一個品德高尚的人,懂得尊重別人,才會得到別人的尊重。我要努力地做到這些。我有一些壞習慣,有時候學習很粗心,把一些會做的題做錯。在生活上,也很粗心,有一次早上起床居然穿反了衣服。我吃飯很慢,有的時候還剩飯。我還起床磨蹭,本來應該迅速地穿好衣服,但是,我總是磨磨蹭蹭地,速度很慢。“我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!” 在上幼兒園以前,我什麼也不會幹,就連穿衣服也是媽媽給我穿好,就要上幼兒園了,這樣可不行,媽媽鍛鍊我要學會自己穿衣服。 有一天,媽媽把衣服擺在我面前,開始讓我自己穿。一開始。我又哭又叫就是不穿,還把衣服扔的滿地都是,然後坐在地上開始大哭,等了好長時間,媽媽還是不理我,我只好自己乖乖的把衣服穿好, 一出了房間門,媽媽就笑了起來,再看看我的衣服,毛衣和褲子都穿反了,我趕緊回房間又重新穿了一遍,這次穿好了,拿起外套,可是外套的扣子又扣不上了,釦子可調皮了,好像故意和我作對,我把釦子往釦眼——人類邪惡的根源;愛情——幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話:幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話“親愛的!擦乾你的眼淚,至高無上的愛情已經開啟了我們的眼界,使我們成了它的崇拜者。是它,
媽媽常教導我,讓我養成良好習慣。這樣長大才能成為一個有用的人。良好的習慣是尊敬師長這樣長大才能成為一個有用的人。良好的習慣是尊敬師長,愛護同學,對人有禮貌;是不粗心,做事情不拖拉;還是愛護公物,不浪費糧食。為什麼呢?因為擁有良好習慣,做一個品德高尚的人,懂得尊重別人,才會得到別人的尊重。我要努力地做到這些。我有一些壞習慣,有時候學習很粗心,把一些會做的題做錯。在生活上,也很粗心,有一次早上起床居然穿反了衣服。我吃飯很慢,有的時候還剩飯。我還起床磨蹭,本來應該迅速地穿好衣服,但是,我總是磨磨蹭蹭地,速度很慢。“我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!” 在上幼兒園以前,我什麼也不會幹,就連穿衣服也是媽媽給我穿好,就要上幼兒園了,這樣可不行,媽媽鍛鍊我要學會自己穿衣服。 有一天,媽媽把衣服擺在我面前,開始讓我自己穿。一開始。我又哭又叫就是不穿,還把衣服扔的滿地都是,然後坐在地上開始大哭,等了好長時間,媽媽還是不理我,我只好自己乖乖的把衣服穿好, 一出了房間門,媽媽就笑了起來,再看看我的衣服,毛衣和褲子都穿反了,我趕緊回房間又重新穿了一遍,這次穿好了,拿起外套,可是外套的扣子又扣不上了,釦子可調皮了,好像故意和我作對,我把釦子往釦眼——人類邪惡的根源;愛情——幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話:“親愛的!擦乾你的眼淚,至高無上的愛情已經開啟了我們的眼界,使我們成了它的崇拜者。是它,
如你有好的文章想和大家分享歡迎投稿,直接向我投遞文章連結即可
最後,國慶福利來了,我們的知識星球已達到1000人了,之前說過到達1000人時將大大幅漲價到169元,為了反饋大家對我們的關注和厚愛,特此維持現價99元最後一天,今天后(今晚 00:00)後將漲到169元,歡迎大家加入我們的知識星球,更多星球資訊參見:
微信掃描或者點選上方二維碼領取Android\Python\AI\Java等高階進階資源
更多學習資料點選下面的“閱讀原文”獲取
相關文章
- 悲催的windowsWindows
- 悲催的程式設計師,以及程式設計師的悲催程式設計師
- 悲催的程式設計師悖論程式設計師
- 程式設計師悲催博弈的加班日子…程式設計師
- 中年架構師,悲催的一天,全靠忍!架構
- 2018年底前端面試總結前端面試
- iPhone SE命運如此悲催:被蘋果坑慘iPhone蘋果
- 2018年年底前端面試總結前端面試
- 創業故事多:合夥人的悲催坑爹二三事創業
- 2018年Android面試題整理Android面試題
- 升級iOS9.3.2後悲催了?看看你的手機續航iOS
- Java:變數的賦值操作(祭奠我那悲催的基礎知識)Java變數賦值
- 記 storm-starter 在某知名 IDE 下的悲催除錯經歷ORMIDE除錯
- 程式設計師最苦逼!中國單身男女比例太悲催程式設計師
- 一個前端妹子的悲歡程式設計之路前端程式設計
- Android 面試題集合(2018)Android面試題
- Android 面試題整理(2018)Android面試題
- Android 面試2018最新最全Android面試
- 2018年Android面試題含答案--適合中高階(下)Android面試題
- 2018年 iOS 面試心得iOS面試
- 2018Java年底總結Java
- 2018Android面試筆記Android面試筆記
- 2018Android面試經歷Android面試
- 八年phper的高階工程師面試之路PHP工程師面試
- 前端實習生2018年總結 | 2018 與我的技術之路前端
- 年輕程式設計師的悲傷程式設計師
- 年底面試之es6總結面試
- 年底去面試,借你“法器”戳破不靠譜公司 !面試
- Android2017-2018最新面試題(3-5年經驗個人面試經歷)Android面試題
- 2018最新 Android 面試題總結(三)Android面試題
- 2018 Android中高階面試題總結Android面試題
- 2018年最新Java面試題及答案Java面試題
- 2018Android暑期實習面試總結Android面試
- 面試必備之悲觀鎖與樂觀鎖面試
- 面試必備之樂觀鎖與悲觀鎖面試
- 2018年最常見的Python面試題&答案(上篇)Python面試題
- 2018年最常見的Python面試題&答案(下篇)Python面試題
- 面試必備的資料庫悲觀鎖與樂觀鎖面試資料庫