【.NET筆試題】Varian瓦里安醫療軟件開發人員招聘筆試試題

1,已知dicom文件包含病人姓名,ID,性別,生日,檢查設備等信息,請用你所熟悉的任意一種程序語言,編寫一個完整的過程,完成從一個給定路徑(如“D:\My Document\”,裏面都是dicom文件)中,析取文件名,病人姓名,ID,性別,生日,檢查設備,編寫程序時,請在必要的地方加以註釋。

 

//C#

public static List<object> ReadAllFileInfo()

{

   var result = new List<object>();

 

   var dir=new DirectoryInfo("D:\My Document\");

   var dirs=dir.GetDirectiories(dir);

  

   for(int i = 0; i < dirs.Length; i++)

   {

      var item = dirs[i];

      var fileName = item.Name;//文件名

     

      var content = File.ReadAllText(item.FullName);

      var contentList = content.Split(',')

      var name = contentList[0];//病人姓名

      var id = contentList[1];//ID

      var gender = contentList[2];//性別

      var birthday = contentList[3];//生日

      var device = contentList[4];//檢查設備

      //todo...

     

      result.Add(new object(){

         fileName,

         name,

         id,

         gender,

         birthday,

         device,

      };

   }

  

   return result;

}

 

  


2,根據下面產品API信息(見附件),設計一個程序頁面通過調用API實現對後臺資源的定製化顯示 

 

<!DOCTYPE html>

<html>

<head>

<script src="/jquery/jquery-1.11.1.min.js"></script>

<script>

$(document).ready(function(){

  $.get("http://www.example.com/Citrix/Store/resources/v2?group=core&group=sub",function(data,status){

      if(status == 200)

     {

      //解析xml

      var xmlDoc = $.parseXML( data ),

        var $xml = $( xmlDoc ),

      var id= $xml.find('id');

        var title = $xml.find( "title" );

      var link = $xml.find('link);

      var summary = $xml.find('summary');

     

      //渲染dom元素

      var html="<p>" + id + "</p><p>" + title + "</p>";

 

      $('.divMain').html(html);

     

     

     }else if(status == 400)

     {

      alert('Bad/Missing security token (see CitrixAuth Authentication Scheme document [3] )');

     }else if(status == 401)

     {

      alert('No resource available for the specified {id} parameter (the resource may not exist or access to it may not be authorized for the requesting user).');

     }

    });

});

</script>

</head>

<body>

 

<div id='divMain'>

  

</div>

 

</body>

</html>

  

 


數據庫設計 

 

下面的表有問題嗎?如果有,如何改進?

       城市*         街道*           郵政編碼

佛山   金魚街   528000

佛山   大福路   528000

佛山   季華路   528000

廣州   北京路   510000

廣州   三元里   510000

廣州   中山路   510000

…   …   …

*城市和街道聯合做主鍵

 

有問題

 

首選主鍵需要是當前表的ID,或者關聯表的外鍵

 

 

需要將城市單獨出來一張表 City

字段包括 ID、Name

例如

1 佛山

2 廣州

 

街道單獨一張表 Streat

字段包括 ID、Name、CityID(外鍵關聯City)、PostID(外鍵關聯郵編)

 

郵編表 Post

字段包括 ID、Code

 

查詢語句如下

 

select

City.Name,Streat.Name,Post.Code

from Streat

left join City on City.ID = Streat.CityID

left join Post on Post.ID = Streat.PostID

 

  


2、假設有以下的兩個表: 

Cus_A

ID*   Name   Address

…   …   …

Cus_B

ID*   Name   Address

…   …   …

*主鍵

表Cus_A和表Cus_B的結構完全相同,表Cus_A和表Cus_B中既存在ID相同的記錄,也存在ID不同的記錄。現要求將ID只存在於表Cus_A中而不存在於表Cus_B中的記錄全部插入到Cus_B表中,並用表Cus_A中的記錄更新表Cus_B中相同的ID的記錄,請寫出完成這一功能的存儲過程。

 

--使用遊標循環,存儲過程如下

 

declare

@ID int,

@Name nvarchar(50),

@Address nvarchar(250)

 

declare myCurssor cursor

for (select * from Cus_A where id not in (select ID from Cus_B))

 

open myCurssor;

fetch next from myCurssor into @ID, @Name, @Address;

while(@@fetch_status=0)

   begin

      insert into Cus_B(ID,Name,Address) values(@ID, @Name, @Address)

   end

close myCurssor

deallocate myCurssor

 

go

 

--批量更新B表數據

update Cus_B set Name=(select Name from Cus_A where Cus_A.ID=Cus_B.ID), Address=(select Address from Cus_A where Cus_A.ID=Cus_B.ID)

 

--表結構一樣,可以直接用select into語法

insert into Cus_B(ID,Name,Address)

select ID,Name,Address

from Cus_A

where ID not in (select ID from Cus_B);

 

  


3、某公司正在開發一個檔案管理系統,要求在關係數據庫中實現和Windows文件系統完全一致的樹狀文件目錄。爲了實現這一目錄結構,至少需求哪些表?請詳細描述這些表的用途和結構(如有必要,可用圖表進行描述)。最後,請用僞編碼(或自然語言)描述按樹狀結構遍歷所有檔案的算法。 

 

 

主要的表如下

目錄表 Directory

字段 ID、Name、Path、ParentID

檔案表 Document

字段 ID、Name、DirectoryID(外鍵目錄表ID)

 

//C# 主要使用樹狀節點的遞歸算法處理

private List<Directory> List = new List<Directory>();

public void GetDirectoryList(int id)

{

   var sql = "select * from Directory left join Document on DirectoryID.ID = Directory.ID";

   if(id > 0)

   {

      sql += "where Directory.ParentID=" + id;

   }

   var query = context.Databse.SqlQuery(sql);

  

   if(query.Count == 0)

   {

      break;

   }

  

   foreach(var item in query.ToList())

   {

      List.Add(new Directory()

      {

         ID=item.ID,

         Name=item.Name,

      });

   }

}

 

  


試題四:系統設計 

簡述“單點登錄”的原理,並設計一個單點登錄的方案。

 

 

單點登錄,通過給授權服務器驗證請求token,將token和本地的cookie關聯,從而記錄登錄狀態,授權服務器拿到token之後進行有效期的校驗,確定是否可以正常登錄授權。

方案有騰訊開放平臺接口提供的OAuth2.0

 

如果需要自己設計,可以設計一個token頒發接口、token認證接口

 

業務接口每次調用之前需要先驗證token是否存在,不存在需要拿用戶名和密碼去token頒發接口獲取token

如果存在,需要去接口校驗token是否失效,有效的token才能正常登錄

還可以通過登錄方式不同,可以使不同設備頒發不同token,同時在線

 

  

  

 

簡述一個軟件工程的主要步驟,並指出每個步驟的明確目標及實施辦法。最後分析哪些是關鍵步驟。

 

項目立項

 

需求調研

 

確認需求文檔

 

確認技術選型

 

搭建技術架構

 

搭建框架代碼

 

拆分業務和任務模塊

 

並行開發

 

系統連調測試

 

系統上線

 

運維升級

 

  


綜合 

你認爲在團隊開發中,你能發揮自己的能力嗎?爲什麼?當個人意見與主管出現矛盾時,你用什麼方法解決?

 

 

可以

對自己負責的模塊能按時保質保量完成,開發工作不延期

自己的任務完成了,還可以瞭解處理其他模塊的任務

做到有責任心,說到做到

 

當意見不一致的時候,我會和主管分析兩個不同意見的利弊得失

如果按照他的想法實現會有什麼問題,導致什麼後果;如果按照我的想法實現會有什麼問題和結果

如果在我表明自己的見解的時候,主管還是覺得不可行的話,我回按照主管的想法去實現

 

  

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章