1. 程式人生 > >2018年第一次嵌入式底層面試記錄

2018年第一次嵌入式底層面試記錄

        面試某公司嵌入式底層,由於還在上班,所以是電話面試。原本以為會考很難的題目,但是問的都很基礎。有些自己明明懂的也蒙圈了,所以有必要做個記錄。

        1、自我介紹。

        答:-------------------

      2、請問uboot啟動過程都做了些什麼?

答:

     1、cpu剛開始初始化的時候,還未設定棧,所以先使用匯編程式碼,構建異常項鍊表,然後設定cpu為svc(特權)模式,同時關閉FIQ和IRQ(防止突發中斷程式跑飛了)
     注:在跳轉到核心之前,要滿足CPU出在SVC模式下。 
     2、對cp15協處理器進行設定,這裡主要是關閉MMU和cache
     3、進入到板級初始化階段,這裡會進行時鐘、記憶體、串列埠的初始化。最後還要關閉看門狗。
     4、接下來就是設定棧,為c語言準備執行環境,呼叫board_init_f,填充gd結構體。
     5、對程式碼重定位,搬運到記憶體中去,搬運之後,跳轉到記憶體中去執行board_init_r,這裡就可以開啟cache了,當然也可以不開啟。然後初始化其他裝置。比如flash、網絡卡、emmc等。初始化完之後,在執行main_loop
 

3、為什麼uboot要關掉cache?

    答: 根據cache的定位可以看出來,它是用來加快cpu從記憶體中取出指令的速度,但我們都知道,在裝置上電之初,我們的記憶體初始化比較慢一拍,當cpu初始化了,但記憶體還沒準備好之後,就對記憶體進行資料讀,那麼勢必會造成了指令取址異常,系統就會掛了。所以,在u-boot的上電之初,就得關閉掉資料cache,指令的cache關閉與不關閉沒有太大的關係。

    注:Dcache只能在MMU開啟之後使用,因為沒有MMU就沒法完成虛實地址對映,也就不能索引Dcache了。

4、nandflash和norflash的區別,對norflash的操作方式的理解

    答:兩種晶片的結構不同 NORflash之所以可以片內執行,就是因為他符合CPU去指令譯碼執行的要求。CPU送一個地址出來,NORflash就能給一個數據讓CPU執行,中間不需要額外的處理操作。    

       NAND flash不一樣是因為nandflash有地址,資料,命令共用IO口的問題,cpu把地址發出來之後,並不能直接得到資料,還需要控制線的操作才能完成。就是他沒有專用的SRAM介面。

        嵌入式系統中程式碼的執行方式主要有3種:

        完全對映\按需分頁\eXecute In Place (XIP)片上執行。

 參考:http://blog.csdn.net/amberman/article/details/8122300

5、uboot怎麼傳參給核心的
答:
     簡單的講,uboot利用函式指標及傳參規範,它將
     R0: 0x0
     R1: 機器號
     R2: 引數地址
     三個引數傳遞給核心。
     其中,R2暫存器傳遞的是一個指標,這個指標指向一個TAG區域。
 

6、linux怎麼進行記憶體管理

      早期計算機中,由於應用程式比較小,可以直接在實體記憶體中執行,但現在計算機裡面程式那麼多又那麼大,所以就需要對記憶體進行管理。
      1、對記憶體的分配和管理,也就是平時應用層malloc和核心層vmalloc、kmalloc之類的記憶體申請的管理。
      2、虛擬記憶體和實體記憶體之間的轉換。

7、說說程序和執行緒的區別

    答:  簡單的來說,一個程式至少有一個程序,一個程序至少有一個執行緒。

       第一點、程序有自己的獨立地址空間,每啟動一個程序,系統就會為它分配地址空間,建立資料表來維護程式碼段、堆疊段和資料段,這種操作非常昂貴。而執行緒是共享程序中的資料的,使用相同的地址空間,因此CPU切換一個執行緒的花費遠比程序要小很多,同時建立一個執行緒的開銷也比程序要小很多。
       但這樣帶來的缺點就是,多執行緒程式只要有一個執行緒掛掉了,那麼整個程序也就掛掉了,而程序則不會影響另外一個程序,它有自己的獨立地址空間。
 
       第二點、執行緒之間的通訊更方便,同一程序下的執行緒共享全域性變數、靜態變數等資料,而程序之間的通訊需要以通訊的方式(IPC)進行。


8、程序間通訊都有些什麼?
答:
     1、無名管道通訊
      核心維護一塊記憶體,有讀端和寫端。只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。
     2、有名管道通訊
      核心維護一塊記憶體,表現形式為一個有名字的檔案。傳輸方式:半雙工
     3、訊息佇列通訊
     4、訊號量通訊

     5、訊號     訊號量是一個計數器,可以用來控制多個程序對共享資源的訪問。它常作為一種鎖機制,防止某程序正在訪問共享資源時,其他程序也訪問該資源。因此,主要作為程序間以及同一程序內不同執行緒之間的同步手段。

     6、共享記憶體通訊
     7、套接字通訊
      套介面也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同機器間的程序通訊。
 參考:http://blog.csdn.net/violet_echo_0908/article/details/51201278
       
9、在應用層呼叫一個read,是怎麼傳到核心中去的,流程是啥。
答:
     應用程式通過系統呼叫進入核心,然後
 (這個回答的比較亂。。。)

10、ext4的檔案系統單層目錄可以建立多少檔案?
答:
     按網上查資料來看:Ext3 目前只支援 32,000 個子目錄,而 Ext4 本身支援無限數量的子目錄
     https://www.jianshu.com/p/b28ed82a56a6

11、建立一個檔案的時候,會建立一個怎麼樣的節點。
答:
     一個檔案被建立後至少要佔用一個inode和一個block

12、程序有幾種狀態
     一般來說,程序有三個狀態,即就緒狀態,執行狀態,阻塞狀態
     總結:fork一個程序之後,程序加入佇列,處在就緒態,等待被呼叫,此時如果得到執行就進入執行態,這時如果遇到阻塞狀態就進入等待態等待再條件滿足後再次進入就緒態,如果運氣不好,在執行態時直接被結束了,就進入了殭屍態,如果被訊號給終止了,就進入停止態。
 
13、對核心各種鎖的瞭解
 核心鎖
 1、原子操作(atomic):
 2、自旋鎖(spinlock/spinlock_irqsave):
 3、讀寫自旋鎖(rwlock):
 4、順序自旋鎖(seqlock):
 5、RCU(讀-拷貝-更新):
 6、訊號量(semaphore):
 7、讀寫訊號量:
 https://www.cnblogs.com/tolimit/p/4624070.html
 http://blog.csdn.net/FreeeLinux/article/details/54267446

 

相關推薦

2018第一嵌入式底層面試記錄

        面試某公司嵌入式底層,由於還在上班,所以是電話面試。原本以為會考很難的題目,但是問的都很基礎。有些自己明明懂的也蒙圈了,所以有必要做個記錄。         1、自我介紹。         答:-------------------       2、請問u

物聯網工程學院2018第一軟體培訓----培訓總結

       第一次培訓的內容是C語言基礎,按照“C語言引述”——“C語言基礎知識及語法講解” ——“國慶大禮包講解”的順序展開。同時本次培訓“安裝IDE & 配置環境(CodeBlocks)”的工作已經於培訓前全部完成。下面按照培訓順序進行總結和擴充。 目錄

2018 ,去百度面試 Java 後端的一面試經歷

https 請求 遇到 net 簡歷 共享內存 targe 應對 部門 一,百度一面:### 1、給一個函數,返回 0 和 1,概率為 p 和 1-p,請你實現一個函數,使得返回 01 概率一樣。2、10 億個 url,每個 url 大小小於 56B,要求去重,內存 4G。

2018-10 第一DVWA靶機爆破SQL注入漏洞記錄(GET方法,使用SQLMAP、任意抓包工具)

首先進入DVWA,調整安全級別為low。 開啟SQL Injection頁面,ID欄輸入1 因為DVWA需要登入,所以使用Burp Suite抓包,包裡包含了cookie。 將抓包內容儲存至本地(/root/test) 開啟終端,輸入: sqlmap

總結記錄一下我的第一社招面試經歷

已經凌晨2點多了,看來今天是失眠了,反正睡不著,寫篇日記總結一下我的第一次社招面試經歷吧。2015年12月1日辦理了離職手續,離開了萬通中心,也算是和我的第一個東家正式說了再見,其實還是很喜歡國貿的,這是個美妙的地方,容納著很多金融界人才們的夢想,每每晚上走到這裡你會感嘆帝都

2018 ,去騰訊面試 Java 後端的一面試經歷

一,騰訊一面: 1、給一個函式,返回 0 和 1,概率為 p 和 1-p,請你實現一個函式,使得返回 01 概率一樣。 2、10 億個 url,每個 url 大小小於 56B,要求去重,記憶體 4G。 3、把一個 bst 轉化成一個雙向連結串列。 4

2018第一行代碼

第一行代碼 gpo == ons con pre class ole clas var jrt = { age: 28, characteristics: ‘‘ }; if (jrt.age === 30) { jrt.characteristic

軟件工程(2018第一作業

讓我 電腦 chan 現在 log 計算 3年 index IT 學號:153401010222 id:A08601 Coding 地址:github.com/947104238 閱讀材料並思考 北行陳彥吉同學的博客 一、回顧你過去將近3年的學習經歷 當初你報考的時候,是真

第一個人作業工作記錄

txt ros ron .com 第一步 文件操作 優先 行數 但是 作業要求: 1. 對源文件(*.txt,*.cpp,*.h,*.cs,*.html,*.js,*.java,*.py,*.php等)統計字符數、單詞數、行數、詞頻,統計結果以指定格式輸出到默認文件中

第一寫隨筆,記錄一下初衷

經歷 什麽 解決方法 問題 關於 喜歡 不能 一段 而且 經歷了一個思想鬥爭後,我想明白了,為什麽要寫博客。 之前學習時遇到了問題,百度後,在一篇博客幫助下快速的解決了。 於是我想,我不是不也可以通過記錄自己的經歷,來幫助他人?而且費曼學習法中,也提到了,教會他人是掌握技能

第001講:我和Python的第一親密接觸|學習記錄(小甲魚零基礎入門學習Python)

(標答出處: 魚C論壇) 《零基礎入門學習Python》 Python 是什麼型別的語言? Python是程式碼語言 IDLE 是什麼? IDLE是一個Python Shell,shell的意思就是“外殼”,基本上來說,就是一個通過鍵入文字與程式互

2018天貓3輪面試題目:虛擬機器+併發鎖+Sql防注入+Zookeeper

一面 自我介紹、專案介紹 Spring攔截器、實現了哪些方法?底層原理 AOP如何配置,底層原理、2種動態代理,aop註解實現,xml定義切面 Bean的作用域,單例模式是否執行緒安全?惡漢模式是否執行緒安全?bean如何結束生命週期? Spring事務種

201810月26日面試回顧

今天只有上午一場面試,下午的取消掉了。 早上9點半之後就到了,兩輪技術面,一輪hr面,到了12點之後才結束,總體來說還是一場很舒服的面試,跟技術面試官聊的挺好,還學到了不少知識。 一面: 不同資料結構的時間複雜度 講一講集合類都瞭解哪些,常用的有哪些,有什麼區別

201810月25日面試回顧

1、 上午去的公司做區塊鏈相關的虛擬幣交易所業務,目前已有上線版本,不過還在快速開發迭代中,需要加班,目前的工作時間安排是:10,10,6:每天可以10點上班,晚上10點下班,週六也需要加一天,有餐補,交通補,加班費。公司有避稅,14薪,舉例月薪18k,則每月實發17k左右,公積金以50

201810月24日面試回顧

1、上午面試 技術2面,人力1面 技術一面:主要以專案使用過程中的問題為主,問是否碰到過此類問題,有沒有解決方案,包括Spring的使用,配置檔案,動態代理,專案架構擴充套件,Close_Wait的原因及解決方案,mysql 技術二面:你自己的優點,自己的缺點,專案的組成,自己負責的模組

2018硬體第一培訓總結

2018屆科協硬體第一次培訓總結          第一次的科協硬體培訓,主要為大家講解了對基本電路元器件和電路的認識,以及AD18的使用操作,使用DXP繪製原理圖並生成PCB,下面對培訓的內容進行詳細介紹: 1.DXP   &

WebQQ 2018(一)第一登入

檢查登入狀態 GET:  返回: {"retcode":0} 表示已登入 {"retcode":100101} 登入狀態過期 獲取登入二維碼 GET:        Cookies:{'pt_clientip': 'b0867167015c4d89', 'pt

2018前端開發校招面試總結

原文:syean.cn/2018/12/27/… 2018年人生中最重要的事情之一就是找工作啦,從6月份初斷斷續續開始複習,7月內推開始,9月大批量的筆試、面試,9月初拿到了第一個offer,10月初拿到了自己比較滿意的offer,也是歷經了快4個月。 簡歷投的主要是杭州、上海的一些大廠們,分享一些面試的問

20183月php開發面試最新快報(鏈家+一下科技+新浪+自如+百度)-熱氣騰騰[題目+答案]

===========================寫在前面:這兩天面了幾家,趕緊趁著還記得,把面試題記錄下來,以供參考。鏈家:注重基礎和底層原理,還有程式碼的異常處理,摳細節。不過比較人性化,注重持久化發展,上下班不用打卡,活幹完了6,7想撤就可以撤,好任性的有沒有。然後

記一個小白的第一社招面試

在51job上投了好幾家簡歷,最後只有一家打電話約我去面試(可能51job上的簡歷寫得太差了吧--|||),約的是下午三點,結果我兩點40就到了,剛好沒有人來面試,就直接給我面了。 先是做了個自我介紹,然後面試官就拿著簡歷開始問我。 談談你對於redis的理解(自己作死,