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