亞信科技面試題及參考答案
亞信科技面試題及參考答案
亞信的輝煌歷程見證著中國通信行業的信息化發展進程。亞信科技的求職競爭很激烈,準備好怎么回答面試題很關鍵,以下是小編為大家收集到的亞信科技面試題,希望對大家有幫助!
亞信科技面試題篇1
1. 排序算法 時間復雜度 ,說出你喜歡的一種算法,說其原因
插入排序 O(n^2)
歸并排序 O(nlog2n)
快速排序 最好 O(nlog2n) 最壞 O(n^2)
冒泡排序 O(n^2)
選擇排序 O(n^2)
堆排序 O(nlogn)
希爾排序O(n^2)
2. 逆序單鏈表
3. 進程間通信有哪幾種
現在最常用的進程間通信的方式有:管道,信號,信號量,消息隊列,共享內存,套接字(socket)。
(1) 管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的
進程間使用。進程的親緣關系通常是指父子進程關系
(2) 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主
要作為進程間以及同一進程內不同線程之間的同步手段
(3) 消息隊列是由消息的鏈表,存放在內核中并由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式字節流以及緩沖區大小受限等缺點
(4) 信號是一種比較復雜的通信方式,用于通知接收進程某個事件已經發生
(5) 共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由
一個進程創建,但多個進程都可以訪問。共享內存是最快的 IPC 方
式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往
與其他通信機制,如信號兩,配合使用,來實現進程間的同步和通信。
(6) 套解口也是一種進程間通信機制,與其他通信機制不同的是,它可用于不同及其間的進程通信
4. 進程和線程的區別
簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.
線程的劃分尺度小于進程,使得多線程程序的并發性高。
另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。
線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在于一個應用程序中,有多個執行部分可以同時執行。但操作系統并沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
5. OSI七層網絡模型與TCP/IP四層網絡模型
Osi:物理,數據鏈路,網絡,傳輸,會話,表示,應用
TCP/IP :網絡接口,網間,傳輸,應用
6. 用socket寫出 server 和 client 的函數
Server:int socket,int bind,listen,accept,read,write
Client:socket,connect,write,read
7. 多線程有哪些函數,越多越好
pthread_create 創建線程
pthread_self 獲取自身線程的id
pthread_once 一次性初始化
pthread_join 獲得進程的終止狀態
pthread_mutex_init 初始化一個互斥量 8. TCP和UDP的區別
TCP---傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快
9. Explicit含義和作用
禁止隱式轉換,防止程序員誤操作
亞信科技面試題篇2
1. c++ 繼承與派生中,隱藏與覆蓋的條件,含義,區別
成員函數被重載的特征:
(1)相同的范圍(在同一個類中);
(2)函數名字相同;
(3)參數不同;
(4)virtual關鍵字可有可無。
覆蓋是指派生類函數覆蓋基類函數,特征是:
(1)不同的范圍(分別位于派生類與基類);
(2)函數名字相同;
(3)參數相同;
(4)基類函數必須有virtual關鍵字。
“隱藏”是指派生類的函數屏蔽了與其同名的基類函數,規則如下:
(1)如果派生類的函數與基類的函數同名,但是參數不同。此時,不論有無virtual關鍵字,基類的函數將被隱藏(注意別與重載混淆)。
(2)如果派生類的函數與基類的函數同名,并且參數也相同,但是基類函數沒有virtual 關鍵字。此時,基類的函數被隱藏(注意別與重寫混淆)
1. 構造和析構函數 是什么,寫一個拷貝構造函數
當一個類含有一些數據成員,你需要在實例化類的時候就初始化這些成員,你就需要自己定義構造函數。例如Person類含有m_strName成員,你在聲明該類是就將其賦值 Person myPerson("張三")
對于拷貝構造函數,為了防止淺拷貝造成的兩個對象指向同一內存,當刪除其中一個對象后導致另一對象指向內容為空的時候,我們就需要定義自己的拷貝構造函數來進行深拷貝。 當你的類數據成員中使用了動態分配的內存,你就需要定義自己的析構函數來釋放這部分內存,防止內存泄露。
系統定義的默認構造函數和析構函數函數名和類名相同,如Person類: Person()構造函數
~Person()析構函數
拷貝構造:
String::String(const String &other)
{
}
String & String::operate =(const String &other)
{
}
2. Vector容器
vector
test.pushback(1);//把1和2壓入vector 這樣test[0]就是1,test[1]就是2
test.pushback(2);
亞信科技面試題篇3
1. 統計目錄下所有文件數目 ls |wc –l
2. 查找出10天未改動的文件 find . –ctime +10
3. 刪除一個目錄下的所有文件 (不能用rm –f,用xargs) If(this == &other) Return *this; Delete [] data; Int length = strlen(other.data); Data = new char[length+1]; Strcpy(data,other.data); Return *this; Int length = strlen(other.data); Data = new char[length+1]; Strcpy(data,other.data);
find . -type f -exec rm {} \;
find . -type f |xargs rm
4. 用一個命令新建一個目錄a,a里面含有目錄b mkdir -p a/b
5. Sed 正則表達式
6. Vi 查找一個字符串
7. Ls –l 和 ls –l *的區別
Ls –l 只顯示當前目錄下的文件和目錄;
Ls –l * 顯示當前目錄下的文件和目錄,并且顯示子目錄下的所有文件和目錄
8. Shell有幾種
目前流行的Shell有ash, bash, ksh, csh, zsh等
bash是Linux系統默認使用的Shell
9. Awk的使用 (最后2列數據相加)
2. 說出你常用的shell命令。并解釋其作用
3. 把一個目錄下所有文件的名稱括目錄后加.bak
rename ’s/$/\.bak/’ *
4. Doc文件的換行符和unix下換行符有什么區別
DOC和windows中換行由回車和換行符\r決定
Unix就一個換行符 \n
ORACLE 部分
1. 建1張表,2個字段確定一個主鍵和索引,然后根據這2個字段統計最大費用 (寫出建表,建索引和建主鍵的語句寫出)
CREATE TABLE table (
Name varchar2(4) NOT NULL,
Value varchar2(20) , PRIMARY KEY(name ,value)
)
TABLESPACE 表空間;
CREATE INDEX DCUSTMSG_IDX ON DCUSTMSG (name,value);
CREATE UNIQUE INDEX DCUSTMSG_PK ON DCUSTMSG (name , value);
2. Truncate與delete的區別
truncate的作用是清空一個表格,在刪除數據方面,其與delete有一些區別,
1、在功能上,truncate是清空一個表的內容,它相當于delete from table_name。
2、delete是dml操作,truncate是ddl操作;因此,用delete刪除整個表的數據時,會產生大量的roolback,占用很多的rollback segments, 而truncate不會。
3、在內存中,用delete刪除數據,表空間中其被刪除數據的表占用的空間還在,便于以后的使用,另外它是“假相”的刪除,相當于windows中用delete刪除數據是把數據放到回收站中,還可以恢復,當然如果這個時候重新啟動系統(OS或者RDBMS),它也就不能恢復了!
而用truncate清除數據,內存中表空間中其被刪除數據的表占用的空間會被立即釋放,相當于windows中用shift+delete刪除數據,不能夠恢復!
4、truncate 調整high water mark 而delete不;truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默認)delete 則不可以。
5、truncate 只能對TABLE,delete 可以是table,view,synonym。
6、TRUNCATE TABLE 的對象必須是本模式下的,或者有drop any table的權限 而 DELETE 則是對象必須是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的權限。
7、在外層中,truncate或者delete后,其占用的空間都將釋放。
8、truncate和delete只刪除數據,而drop則刪除整個表(結構和數據)。
3. Dml和ddl的區別
修改數據結構,數據庫結構等等的語句成為DDL
比如:alter table, create table, alter user, truncate table等等 修改數據本身的語句成為DML
比如:update,insert,delete
DDL不可以rollback,但是DML可以
4. 索引的數據結構是什么,為什么用這個?
B樹
5. 視圖 是什么,并建立一個
CREATE OR REPLACE VIEW tableview (字段1,字段2) as (select 字段1,字段2 from table 1 UNION select 字段1,字段2 from table 2)/
6. 內鏈接和外連接分別是什么?有什么關系?
7. 刪除一個表的重復數據
8. 刪除一個表的重復數據,只留一條數據(用一個sql)
select distinct num from tabname into temp a1
delete from tabname
insert into tabname select * from a1
delete test3 a
WHERE EXISTS (SELECT 1
FROM test3 b
WHERE a.A = b.A and a.B = b.B AND a.rowid < b.rowid)
猜你感興趣: