亞信科技面試題及參考答案
亞信的輝煌歷程見證著中國通訊行業的資訊化發展程序。亞信科技的求職競爭很激烈,準備好怎麼回答面試題很關鍵,以下是小編為大家收集到的亞信科技面試題,希望對大家有幫助!
亞信科技面試題篇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;//建立一個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***