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