亞信科技面試題及參考答案

  亞信的輝煌歷程見證著中國通訊行業的資訊化發展程序。亞信科技的求職競爭很激烈,準備好怎麼回答面試題很關鍵,以下是小編為大家收集到的亞信科技面試題,希望對大家有幫助!

  亞信科技面試題篇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***