首先做自我介紹,然后對自己上一個工作的介紹,以及離職原因,介紹自己的教育經歷,問我是否有什么證書,然后等待筆試,最后讓回家等通知
面試官問的面試題:北京南天軟件有限公司JAVA研發工程師面試題
雙向鏈表的快慢指針算法,寶石花算法,一個字符或數字是否是最對稱數字,輸出100-200之間的素數,輸入入一串字符,統計出字母個數,空格個數,數字個數,其他字符個數
一面和二面
自我介紹
項目的總體介紹
詢問技術問題和項目的業務問題
出結果
綜合測評
北京南天軟件有限公司it實施工程師面試題
項目中主要職責,用過哪些技術
linux的命令和shell腳本的相關知識
kettle的使用組件
通過看智聯招聘信息,得知招聘信息,目前還在等待面試,好激動。希望有機會專業面試過了,希望被錄取。希望有機會專業面試過了,希望被錄取希望有機會專業面試過了,希望被錄取希望有機會專業面試過了,希望被錄取
面試官問的面試題:北京南天軟件有限公司C語言應用軟件工程師面試題
1.C++源文件從文本到可執行程序的過程
預處理,產生.ii文件
編譯,產生匯編.s文件
匯編,產生目標.o/.obj文件
鏈接,產生可執行.out/.exe文件
2.#include的順序
若要在a.h中聲明b.h中定義的變量,則在a.c文件中必須先引用b.h文件,再引用a.h文件
3. #include<>和“”的區別
<>表示標準頭文件,編譯器在預定義位置查找該文件
“”表示非系統頭文件,查找從源文件所在路徑開始,查找范圍大于<>
4. 進程與線程區別
資源:線程比進程節儉。啟動新的進程需要分配獨立的地址空間,建立數據表來維護代碼段、堆棧段和數據段。
切換效率:同一進程中的不同線程共享地址空間,線程彼此切換的時間遠小于進程切換
通信:線程之間共享數據空間,進行通信時,一個線程的數據可以直接由其他線程共享。而進程之間進行數據傳遞必須使用進程間的通信方式進行
5.使用線程的優點
具有多任務、并發性的特點
多CPU系統更加高效
改善程序結構,長而復雜的進程可以分為多個線程,成為幾個獨立或半獨立的部分,是的代碼更易理解和修改。
6.malloc()實現方案
實質:將空閑的內存塊鏈接起來的空閑鏈表
調用malloc()函數后,順序遍歷空閑鏈表找到滿足大小需要的空閑塊,將多余的部分繼續鏈入空閑鏈表
調用free()函數,將用戶釋放的內存塊連接到空閑鏈表上
malloc()請求延時,即將相鄰的小空閑塊合并為大的空閑塊
從OS角度,進程分配內存的兩種方式分別由兩個系統調用完成:brk和mmap。這兩種方式均分配的是虛擬內存,并未分配物理地址。只有在第一次訪問發生缺頁中斷時,才由OS分配物理內存并建立映射關系。
brk將數據段的最高地址指針往高地址推
mmap是在進程的虛擬地址空間中(堆棧之間成為文件映射區域的位置)找空閑的虛擬內存
7.有了malloc()和free()為什么還要有new()和delete()
malloc()是C++/C語言的標準庫函數,new/delete是C++的運算符,都可用于申請動態內存和釋放內存。
非內部數據類型的對象而言,光使用malloc/free無法滿足動態對象的要求。對象在創建的同時要自動執行構造函數,消亡前要自動執行析構函數。Malloc/free是庫函數不是運算符,不在編譯器控制權限內,不能夠把執行析構函數和析構函數的任務交給malloc/free,故創造新的運算符
C++需要能夠完成動態分配內存和初始化工作的運算符new,一個能完成清理和釋放內存工作的運算符delete
8. C++內存管理方式
棧(Stack):存放局部變量,函數參數,由編譯器自動分配和釋放。進出棧由計算機指令支持,分配有專門的寄存器存儲棧的地址,內存空間連續有限。
堆(Heap):程序員手動分配釋放(new,delete),動態分配,內存空間無限制,因此產生內存碎片。OS中有記錄空閑塊的鏈表,收到內存請求即遍歷鏈表找到第一個符合的空間進行分配,并將節點從鏈表中移除。在內存空間首地址中記錄本次分配的大小,用于delete釋放內存空間
全局/靜態存儲區:全局變量和靜態變量分配到該區,程序結束時自動釋放,包括DATA(全局初始化區)段,BSS段(全局未初始化區)。初始化和未初始化的變量放到不同的區。BSS段在程序執行前自動清零,而DATA段在程序執行前已經為0
文字常量區,存放常量字符串,程序結束后系統自動釋放
程序代碼區,存放二進制代碼
9. hash表實現
散列函數hash function,最常見的為f(x)=x%tablesize
碰撞問題,即不同元素的散列值相同。解決方法包括線性探測(依次后移),二次探測(用新的散列值再次散列),拉鏈法(直接鏈接在同一個地址上)
10.TCP模型以及協議
四層模型:
應用層:Telnet、FTP和e-mail
傳輸層:TCP和UDP
網絡層:IP、ICMP和IGMP
鏈路層:設備驅動程序以及接口卡
11.進程間的同步方法
互斥量(mutex)
條件變量(Condition Variable)
信號量(semaphore)
一般手寫就是PV操作,對應的是wait()和signal()
12.const的用途
定義只讀變量即常量
修飾函數的參數和函數的返回值
修飾函數的定義體,被const修飾表示不修改成員變量的值
13. 指針和引用的區別
引用是變量的別名,內部實現是只讀指針
引用只能在初始化時被賦值,其他時候值不能被改變,指針的值在任何時候都可以被改變
引用不能為NULL,指針可以
引用變量內存單元保存的是被引用變量的地址
“sizeof引用”=指向變量的大小,”sizeof指針”=指針本身的大小
引用變量在源代碼中當作普通變量使用,而作函數參數時,內部傳遞的實際上是變量地址
14.Static作用
函數體內static變量作用范圍為函數體,不同于auto變量,該變量的內存只被分配一次,因此下次調用時仍然維持上次的值
在模塊內的static全局變量可以被模塊內所有函數訪問,但不能被模塊外的其他函數訪問
在模塊內的static函數只可被這一模塊內的其他函數調用,適用范圍限定在聲明的模塊內
在類的static成員變量為整個類所擁有,對類的所有對象只有一份拷貝
在類的static成員函數為整個類所擁有,這個函數不接受this指針,因此只能訪問類的static成員變量
15.頭文件中的endif/ifndef/define作用
防止該頭文件被重復引用
16. TCP和UDP區別
TCP傳輸控制協議,提供面向連接、可靠的字節流服務。客戶和服務器彼此交換數據前,必須雙方建立一個TCP連接,之后才能傳輸數據。且提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據端到端傳輸。
UDP用戶數據報協議,簡單的面向數據報的傳輸層協議。不可靠,只負責把應用程序傳給IP層的數據包發送數據,不保證到達目的地。由于不需要建立連接,且無超時重發機制,因此傳輸速度很快。
面試比較簡單了一點簡單基礎題,分為三輪面試
進行自我介紹認識面試 還有基礎筆試
最后就是等通知
北京南天軟件有限公司JAVA開發人員面試題
變量/函數的聲明和定義之間有什么區別
答案:變量/函數的聲明僅聲明變量/函數存在于程序中的某個位置,但未為其分配內存。