研發面試準備

2021-10-23 23:05:52 字數 749 閱讀 1196

c++從編譯到執行要經歷以下過程:

源**–>預處理–>編譯–>優化–>彙編–>鏈結–>目標程式

要進行第一步,預處理過程,要幹的事情有哪些呢, 要處理預編處理巨集定義,條件編譯指令,條件包含指令,特殊符號.

對於巨集定義指令,會將巨集定義變數替換成對應的部分.對條件編譯指令,預處理過程按照程式定義過濾掉不必要的部分. 對條件包含指令,預編譯程式會把它通通加入到目標檔案當中. 對於一些特殊符號,預編譯程式會識別出來並用合適的值替換.

綜合來說實際上就是乙個替換的動作,處理哪些帶#符號的命令和一些特殊符號.

我們如何得到這個檔案呢,linux可以敲下面的命令:

gcc -e hello.cpp hw.i

得到預處理之後的檔案.

詞法分析,語法分析,在確定所有的指令都符合語法規則後,將其翻譯成目標**,最終目標檔案是目標**.

在編譯的過程中,所有的變數都是虛擬位址.在彙編檔案中有乙個表,儲存了虛擬位址對應的變數名稱.

優化處理是編譯系統中一項比較艱深的技術。它涉及到的問題不僅同編譯技術本身有關,而且同機器的硬體環境也有很大的關係。優化一部分是對中間**的優化。這種優化不依賴於具體的計算機。另一種優化則主要針對目標**的生成而進行的。上圖中,我們將優化階段放在編譯程式的後面,這是一種比較籠統的表示。

對於前一種優化,主要的工作是刪除公共表示式、迴圈優化(**外提、強度削弱、變換迴圈控制條件、已知量的合併等)、複寫傳播,以及無用賦值的刪除,等等。

後一種型別的優化同機器的硬體結構密切相關,最主要的是考慮是如

資料研發面試

阿里 一面 1.hive的mapreduce實現過程 2.hive中join的mapreduce過程 3.你在美團有遇到資料傾斜問題嗎,如何解決的 4.實時資料如何保證容錯性的 5.hashmap的實現原理 二面 1.你在工作中如何處理資料傾斜的 2.distinct和group by的區別 3.假...

華為研發面試總結

我今年大四。通訊project專業,國慶前簽了華為研發,由於之前在網上看了非常多關於各大公司的面試筆試總結,對我幫助非常大,所以。我也奉獻出自己的一點力量,為找工作的同學提供一些參考。希望大家找到好作。僅僅針對軟體研發 一 準備 很重要 沒錯,這一點特別重要,大家都知道考研要準備。可能大三下學期就要...

Google研發面試題

今天很開心找到了乙個很不錯的研發面試題,很考驗臨時反應能力,特地拿出來和大家分享一下此題以及自己做該題的心得體會!題目 總共有12個外表都一樣的金屬球,其中有11個球的重量是相同的,1個球的重量可能比其他11個球要重,也可能比較其他11個球輕,這個球稱之為異常球,問 如何利用乙個天平來稱重三次找出這...