當前位置:首頁 » 網頁前端 » 綠盟科技web筆試題目
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

綠盟科技web筆試題目

發布時間: 2022-06-24 13:35:35

① 綠盟科技的產品服務

綠盟科技自主研發的異常流量清洗系統、網路入侵檢測系統、網路入侵防護系統、遠程安全評估系統、Web應用防護系統等產品,不但得到廣大用戶的認可,而且獲得多個行業獎項,同時也在市場上取得了驕人的業績。至今已形成圍繞安全威脅管理、安全內容管理、漏洞評估及合規管理和綜合安全審計等熱點領域的產品家族,從而能夠為廣大行業客戶提供一體化的綜合安全解決方案。
從成立之初,綠盟科技不斷明確持續創新的價值觀。憑借技術團隊的深厚技術底蘊及勇於創新的精神,綠盟科技在其10年的發展歷程中,鐫刻了國內信息安全行業的多項第一:
第一家推出網路入侵防禦類產品
第一家推出高性能遠程漏洞掃描類產品
第一家推出專業的DDoS攻擊防護類產品
第一家推出Web應用專用防護網關類產品
網路入侵檢測/防護產品的第一市場佔有率
……
掌握核心技術,是綠盟科技長期發展戰略的根基。綠盟科技的多款安全產品,在技術上達到國際標准,遠程安全評估系統、網路入侵防護系統,分別通過國際知名測評機構West Coast Labs、NSS Labs等專項測試,並在測試中表現優異,為國內信息安全行業樹立了一面旗幟。綠盟科技正憑借雄厚的技術實力不斷前進,為客戶交付更加優質的產品,協助廣大用戶應對日益變化的安全挑戰,創造更新穩定的業務環境。
服務種類
綠盟科技始終致力於為客戶提供專業安全服務,包安全咨詢服務、可管理安全服務,以及及雲安全服務3個部分的專業服務體系。
可管理安全服務:為客戶提供全面的安全管理外包解決方案,包括7x24小時安全監控、駐場值守安全保障、定期漏洞評估、遠程安全測試、安全事件應急處理,以及安全設備代維等多項貼心的服務內容,客戶可以優化資源配置,更加專注於自身業務的發展。
專業安全服務:為客戶進行全方位風險評估,幫助客戶掌握安全現狀與目標之間的差距、設計及落實安全體系、滿足各種合規性要求、採取措施降低安全風險,進而提高安全管理實效、獲取信息安全管理體系認證等。關注業務安全是綠盟科技安全咨詢服務的發展方向。
SaaS安全服務:SaaS安全服務是通過雲計算方式向用戶交付安全能力。綠盟科技在國內首先推出雲安全服務為網站安全監測服務,即針對客戶網站提供7*24小時實時監測,針對網頁掛馬、敏感內容、網頁篡改、性能問題等事件,第一時間通知用戶,並提供定期的WEB應用漏洞掃描報告,全方位保證客戶網站的安全。

② 面試問題,以下是今天面試的筆試題目,請各位神幫忙回答下

市場調查……

③ 軟體測試實習生筆試 題目

1.英語翻譯就是一段話了,關於計算機的,這個就要靠自己了2。計算機專業基本知識,一些簡單的計算機知識,很簡單,有計算機基礎的80%都會,如果沒基礎,找資料學吧3.軟體測試,你把我說的這幾個詞,到網上隨便查查,知道一些簡單的概念就OK了(軟體缺陷,測試用例,黑盒測試,白盒測試,測試用例的編寫方法,軟體缺陷的分類,單元測試,集成測試,系統測試,驗收測試,自動化測試工具,功能測試,性能測試,壓力測試,負載測試)我只說了幾個重要的,這種筆試題俺做了很多了,都差不多的,如果有點基礎就絕對ok了介紹你個網站,51testing,沒事上去逛逛

④ 一道C筆試題

變數c是字元型變數,所以必然只有一個字元。

而給它附值的'\72'是一個轉義字元數,其中\表示後面的是一個轉義字元,72表示這個字元的ASC碼數值是72,翻譯出來好像是':'。

關於轉義字元可以參考網路。

http://ke..com/view/73.html?wtp=tt

其中與你這個相關的是「\ccc (最多三位)八進制數」

⑤ 到綠盟科技做web研發職位,有發展么

那恭喜你了,你跟的是業界知名的小四、秦大俠。這幾個牛人在國際上都赫赫有名的高級黑客了。跟著他們做攻防研究,國內上哪找這種平台去?

⑥ 綠盟漏掃web應用掃描不上

綠盟漏掃web應用掃描不上
基於綠盟科技多年對Web應用安全的研究與積累,採用嵌入式系統,通過內核級優化,運用智能頁面爬取、資源動態調節、代理緩存機制、實時任務調度和URL級分布式負載均衡等創新技術,獨創的高級掃描繞過技術,「孤島」頁面的日誌關聯分析,以及既兼備手動設定的恆速掃描機制,又可隨外界條件、自身資源佔用進行速度自適應調節,在保障「業務零影響」的前提下最大程度發揮掃描速度,突破大規模網站掃描慢這一難題。

⑦ IBM筆試題求解(智力題)

打開兩盞燈,然後關掉一盞

進房,開著的開關,控制開著的燈

一起打開然後關掉的那個開關,控制燈泡熱的一盞燈

剩下的控制關著的燈

⑧ 網管員的筆試題目和面試題目

標准568B:

橙白-1,橙-2,綠白-3,藍-4,藍白-5,綠-6,棕白-7,棕-8

2.windows XP每個分區下都包含一個System Volume Information 名的隱藏目錄是做什麼的?(用戶說自己C磁碟容量丟啦你第一反映就是這個,之後pagefile.sys)
答:System Volume Information中文名稱可以翻譯為「系統卷標信息」,它存儲著系統還原的備份信息。關閉系統還原功能就可以讓該文件夾容量變小,並不會增長。如果非要刪除需使用Administrator賬戶登錄,然後再進行刪除。
這是WinXP自動生成的文件夾,您的計算機的每個分區上都有一個 System Volume Information 文件夾。
pagefile.sys是windows下的一個虛擬內存,它的作用與物理內存基本相似,但它是作為物理內存的「後備力量」而存在的

3.請寫出下列服務使用的默認埠 pop3\smtp ,DNS ,windows遠程終端,DHCP服務________. (本來想考netstat -an 命令的)
答:ftp:21
ssh:22
telnet:23
DHCP:67,68
mail:25 110 143
pop3:110 109
smtp:25
DNS:53
http:80
snmp:161 udp
oracle:1521
mysql:3306
sql:1421
tomcat:8080 8009
windows遠程終端 3389

4.你在區域網內想獲得IP 192.168.1.2 的MAC,在XP系統的命令提示符中如何操作?
答:arp –a
ARP(Address Resolution Protocol)是地址解析協議,一種將IP 地址轉化成物理地址的協議
nbtstat -a ip
getmac
ipconfig/all

5.將FAT32轉換為NTFS分區的命令是(B )
A、Convert D: /fs:FATB、Convert d: /fs:NTFS
C、Chang C: /fs:NTFS D、Chang C: /fs:FAT

6.網卡MAC地址長度是(D)個二進制位(16進制與2進制的換算關系,只是換種方式問,不用你拿筆去算)
A、12 B、6 C、24 D、48

7.查看編輯本地策略,可以在開始/運行中輸入(B)(WIN設置的基礎之後是注冊表)
A、edit.MSC B、gpedit.msc C、regedit32 D、regedit

8.手動更新DHCP租約,可使用ipconfig命令,加上參數(B)(我們總用/all,我就想知道你這個人是否有拓展知識的能力,有沒有摸索過一個命令的除了你自己知道的外它還能完成什麼工作)
A、/release B、/renew C、/all D、/seTCLassid
答:/release_all 釋放全部(或指定)適配器的由 DHCP分配的動態IP 地址
/renew_all為全部(或指定)適配器重新分配IP地址
9.ICMP 在溝通之中,主要是透過不同的類別(Type)與代碼(Code)讓機器來識別不同的連線狀態,請問 type 8 名稱是(D),代表的意思_____________________.(同上,整天ping。你是否思考了ping 的細節過程)
A、Echo ReplyB、RedirectC、Timestamp ReplayD、Echo Request
答:
ICMP是「Internet Control Message Protocol」(Internet控制消息協議)的縮寫, 用於在IP主機、路由器之間傳遞控制消息
Echo Request 請求回應訊息
Echo Reply 是一個回應信息。
Timestamp Replay 此訊息純粹是回應Timestamp Request用的
Timestamp Request 要求對方送出時間訊息用以計算路由時間的差異以滿足同步性協定的要求
Redirect 用來重新導向路由路徑
10.windows XP系統盤C 盤下的 ntldr 文件是主要起什麼作用,如果刪除它會有什麼後果,刪除後用什麼辦法恢復系統正常?
免答題)(他在啟動過程中涉及的太多,當遇到windows XP系統無法啟動時你分析他停在哪一步上。後來覺得來應試的沒人能答出來,後來就去掉了此題。)
答:NTLDR是windows XP啟動時的一個重要引導文件,可以通過win_xp安裝盤恢復,將i386下的NTLDR拷貝到c:\

⑨ 您好,我看到您在網上有關綠盟科技的回復,我想請問一下您是否了解綠盟科技的筆試與面試呢

了解,我負責筆試和面試

⑩ 各大公司筆試題及答案

騰訊筆試題:const的含義及實現機制
const的含義及實現機制,比如:const int i,是怎麼做到i只可讀的?
const用來說明所定義的變數是只讀的。
這些在編譯期間完成,編譯器可能使用常數直接替換掉對此變數的引用。
更多閱讀:
http://www.92ask.net/Archive/?action=show&id=18
初探編譯器static、const之實現原理
騰訊筆試題:買200返100優惠券,實際上折扣是多少?
到商店裡買200的商品返還100優惠券(可以在本商店代替現金)。請問實際上折扣是多少?
由於優惠券可以代替現金,所以可以使用200元優惠券買東西,然後還可以獲得100元的優惠券。
假設開始時花了x元,那麼可以買到 x + x/2 + x/4 + ...的東西。所以實際上折扣是50%.(當然,大部分時候很難一直兌換下去,所以50%是折扣的上限)
如果使用優惠券買東西不能獲得新的優惠券,那麼
總過花去了200元,可以買到200+100元的商品,所以實際折扣為 200/300 = 67%.
騰訊筆試題:tcp三次握手的過程,accept發生在三次握手哪個階段?
accept發生在三次握手之後。
第一次握手:客戶端發送syn包(syn=j)到伺服器。
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個ASK包(ask=k)。
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1)。
三次握手完成後,客戶端和伺服器就建立了tcp連接。這時可以調用accept函數獲得此連接。
騰訊筆試題:用UDP協議通訊時怎樣得知目標機是否獲得了數據包
用UDP協議通訊時怎樣得知目標機是否獲得了數據包?
可以在每個數據包中插入一個唯一的ID,比如timestamp或者遞增的int。
發送方在發送數據時將此ID和發送時間記錄在本地。
接收方在收到數據後將ID再發給發送方作為回應。
發送方如果收到回應,則知道接收方已經收到相應的數據包;如果在指定時間內沒有收到回應,則數據包可能丟失,需要重復上面的過程重新發送一次,直到確定對方收到。
關於UDP協議的簡單介紹,可以參考
http://ke..com/view/30509.htm
騰訊筆試題:統計論壇在線人數分布
求一個論壇的在線人數,假設有一個論壇,其注冊ID有兩億個,每個ID從登陸到退出會向一個日誌文件中記下登陸時間和退出時間,要求寫一個演算法統計一天中論壇的用戶在線分布,取樣粒度為秒。
一天總共有 3600*24 = 86400秒。
定義一個長度為86400的整數數組int delta[86400],每個整數對應這一秒的人數變化值,可能為正也可能為負。開始時將數組元素都初始化為0。
然後依次讀入每個用戶的登錄時間和退出時間,將與登錄時間對應的整數值加1,將與退出時間對應的整數值減1。
這樣處理一遍後數組中存儲了每秒中的人數變化情況。
定義另外一個長度為86400的整數數組int online_num[86400],每個整數對應這一秒的論壇在線人數。
假設一天開始時論壇在線人數為0,則第1秒的人數online_num[0] = delta[0]。第n+1秒的人數online_num[n] = online_num[n-1] + delta[n]。
這樣我們就獲得了一天中任意時間的在線人數。
騰訊筆試題:從10G個數中找到中數
在一個文件中有 10G 個整數,亂序排列,要求找出中位數。內存限制為 2G。
不妨假設10G個整數是64bit的。
2G內存可以存放256M個64bit整數。
我們可以將64bit的整數空間平均分成256M個取值范圍,用2G的內存對每個取值范圍內出現整數個數進行統計。這樣遍歷一邊10G整數後,我們便知道中數在那個范圍內出現,以及這個范圍內總共出現了多少個整數。
如果中數所在范圍出現的整數比較少,我們就可以對這個范圍內的整數進行排序,找到中數。如果這個范圍內出現的整數比較多,我們還可以採用同樣的方法將此范圍再次分成多個更小的范圍(256M=2^28,所以最多需要3次就可以將此范圍縮小到1,也就找到了中數)。
騰訊筆試題:兩個整數集合A和B,求其交集
兩個整數集合A和B,求其交集。
1. 讀取整數集合A中的整數,將讀到的整數插入到map中,並將對應的值設為1。
2. 讀取整數集合B中的整數,如果該整數在map中並且值為1,則將此數加入到交集當中,並將在map中的對應值改為2。
通過更改map中的值,避免了將同樣的值輸出兩次。
騰訊筆試題:找出1到10w中沒有出現的兩個數字
有1到10w這10w個數,去除2個並打亂次序,如何找出那兩個數?
申請10w個bit的空間,每個bit代表一個數字是否出現過。
開始時將這10w個bit都初始化為0,表示所有數字都沒有出現過。
然後依次讀入已經打亂循序的數字,並將對應的bit設為1。
當處理完所有數字後,根據為0的bit得出沒有出現的數字。
首先計算1到10w的和,平方和。
然後計算給定數字的和,平方和。
兩次的到的數字相減,可以得到這兩個數字的和,平方和。
所以我們有
x + y = n
x^2 + y^2 = m
解方程可以得到x和y的值。
騰訊筆試題:需要多少只小白鼠才能在24小時內找到毒葯
有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時後就會死亡,至少要多少只小白鼠才能在24小時時鑒別出那瓶水有毒?
最容易想到的就是用1000隻小白鼠,每隻喝一瓶。但顯然這不是最好答案。
既然每隻小白鼠喝一瓶不是最好答案,那就應該每隻小白鼠喝多瓶。那每隻應該喝多少瓶呢?
首先讓我們換種問法,如果有x只小白鼠,那麼24小時內可以從多少瓶水中找出那瓶有毒的?
由於每隻小白鼠都只有死或者活這兩種結果,所以x只小白鼠最大可以表示2^x種結果。如果讓每種結果都對應到某瓶水有毒,那麼也就可以從2^x瓶水中找到有毒的那瓶水。那如何來實現這種對應關系呢?
第一隻小白鼠喝第1到2^(x-1)瓶,第二隻小白鼠喝第1到第2^(x-2)和第2^(x-1)+1到第2^(x-1) + 2^(x-2)瓶....以此類推。
回到此題,總過1000瓶水,所以需要最少10隻小白鼠。
騰訊筆試題:根據上排的數填寫下排的數,並滿足要求。
根據上排給出十個數,在其下排填出對應的十個數, 要求下排每個數都是上排對應位置的數在下排出現的次數。上排的數:0,1,2,3,4,5,6,7,8,9。
騰訊筆試題:判斷數字是否出現在40億個數中?
給40億個不重復的unsigned int的整數,沒排過序的,然後再給幾個數,如何快速判斷這幾個數是否在那40億個數當中?
答案:
unsigned int 的取值范圍是0到2^32-1。我們可以申請連續的2^32/8=512M的內存,用每一個bit對應一個unsigned int數字。首先將512M內存都初始化為0,然後每處理一個數字就將其對應的bit設置為1。當需要查詢時,直接找到對應bit,看其值是0還是1即 可。
1、請定義一個宏,比較兩個數a、b的大小,不能使用大於、小於、if語句#define Max(a,b) ( a/b)?a:b
2、如何輸出源文件的標題和目前執行行的行數
int line = __LINE__;
char *file = __FILE__;
cout<<"file name is "<<(file)<<",line is "<
3、兩個數相乘,小數點後位數沒有限制,請寫一個高精度演算法
4、寫一個病毒
while (1)
{
int *p = new int[10000000];
}
5、不使用額外空間,將 A,B兩鏈表的元素交*歸並
6、將樹序列化 轉存在數組或 鏈表中
struct st{
int i;
short s;
char c;
};
sizeof(struct st);
7、
char * p1;
void * p2;
int p3;
char p4[10];
sizeof(p1...p4) =?
8、
4,4,4,10
二分查找
快速排序
雙向鏈表的刪除結點
面試基本上都是和項目相關的,並當場說幾個程序題的輸出,不能用草稿紙

微軟筆試題:寫程序找出二叉樹的深度
一個樹的深度等於max(左子樹深度,右子樹深度)+1。可以使用遞歸實現。
假設節點為定義為
1. struct Node {
2. Node* left;
3. Node* right;
4. };
5. int GetDepth(Node* root) {
6. if (NULL == root) {
7. return 0;
8. }
9. int left_depth = GetDepth(root->left);
10. int right_depth = GetDepth(root->right);
11. return left_depth > right_depth ? left_depth + 1 : right_depth + 1;
12. }
微軟筆試題:利用天平砝碼,三次將140克的鹽 分成50、90克兩份?
有一個天平,2克和7克砝碼各一個。如何利用天平砝碼在三次內將140克鹽分成50,90克兩份。
第一種方法:
第一次:先稱 7+2克鹽 (相當於有三個法碼2,7,9)
第二次:稱2+7+9=18克鹽 (相當於有2,7,9,18四個法碼)
第三次:稱7+18=x+2,得出x是23,23+9+18=50克鹽.
剩下就是90克了.
第二種方法:
1.先把140克鹽分為兩份,每份70克
2.在把70克分為兩份,每份35克
3.然後把兩個砝碼放在天平兩邊,把35克麵粉分成兩份也放在兩邊(15+7=20+2)
現在有四堆麵粉70,35,15,20,分別組合得到
70+20=90
35+15=50
微軟筆試題:地球上有多少個滿足這樣條件的點
站在地球上的某一點,向南走一公里,然後向東走一公里,最後向北走一公里,回到了原點。地球上有多少個滿足這樣條件的點?
北極點滿足這個條件。
距離南極點很近的一個圈上也滿足這個條件。在這個圓圈上,向南走一公里,然後向東走一公里恰好繞南極點一圈,向北走一公里回到原點。
所以地球上總共有無數點滿足這個條件。
或者
首先,在地球表面上,南北走向是沿著經度方向,東西是沿著緯度方向。如果你一直往北走就會達到北極點,往南走就到了南極點。因此,向南走一公里,然 後向東走一公里,最後向北走一公里,回到了原點,一種情況就是,出發點是在北極點,這樣向南走一公里,然後向東走任意幾公里,最後向北走一公里,最後都會 回到北極點;
其次,可以這么認為如果從A點向南走一公里到達B點,那麼若向東走一公里能回到B,那麼最後向北走一公里,就能回到了原點A。這樣就可以先找出在南 北極點附近找出繞一周只有1公里的圈,那麼這個圈落在南極附近時,只要往北推1公里,此時該圈上的點都能滿足;若這個圈落在北極附近時,能不能往北推1公 里我就不分析了。反正在南極附近能找到任意多個點就能回到這個問題了
微軟筆試題:正確標注水果籃
有三個水果籃。其中一個裡面只有蘋果,一個裡面只有橘子,另外一個既有蘋果又有橘子。每個水果籃上都有標簽,但標簽都是錯的。如何檢查某個水果籃中的一個水果,然後正確標注每個水果籃?
從標注成既有蘋果也有橘子的水果籃中選取一個進行檢查。
如果是橘子,則此籃中只有橘子;標有橘子的水果籃中只有蘋果;標有蘋果的水果籃中既有蘋果也有橘子。
如果是蘋果,則此籃中只有蘋果;標有蘋果的水果籃中只有橘子;標有橘子的水果籃中既有蘋果也有橘子。
微軟筆試題:不利用浮點運算,畫一個圓
不利用浮點運算,在屏幕上畫一個圓 (x**2 + y**2 = r**2,其中 r 為正整數)。
考慮到圓的對稱性,我們只需考慮第一象限即可。
等價於找到一條連接點(0,r)到點(r,0)的一條曲線,曲線上的點距圓心(0,0)的距離最接近 r。
我們可以從點(0,r)開始,搜索右(1,r),下(0,r-1),右下(1,r-1)三個點到圓心的距離,選擇距圓心距離最接近 r 的點作為下一個點。反復進行這種運算,直至到達點(r,0)。
由於不能利用浮點運算,所以距離的比較只能在距離平方的基礎上進行。也就是比較 x**2 + y**2 和 r**2之間的差值。
微軟筆試題:將一個句子按單詞反序
將一個句子按單詞反序。比如 「hi com mianshiti」,反序後變為 「mianshiti com hi」。
可以分兩步走:
第一步按找字母反序,「hi com mianshiti」 變為 「itihsnaim moc udiab ih」。
第二部將每個單詞中的字母反序,「itihsnaim moc udiab ih」 變成 「mianshiti com hi」。
這個方法可以在原字元串上進行,只需要幾個整數變數來保持指針即可,空間復雜度低。
微軟筆試題:計算n bit的整數中有多少bit 為1
設此整數為x。
方法1:
讓此整數除以2,如果余數為1,說明最後一位是1,統計值加1。
將除得的結果進行上面運算,直到結果為0。
方法2:
考慮除法復雜度有些高,可以使用移位操作代替除法。
將 x 和 1 進行按位與操作(x&1),如果結果為1,說明最後一位是1,統計值加1。
將x 向右一位(x >> 1),重復上面過程,直到移位後結果為0。
方法3:
如果需要統計很多數字,並且內存足夠大,可以考慮將每個數對應的bit為1的數量記錄下來,這樣每次計算只是一次查找操作。
1. int n = 0;while (x)
2. {
3. xx = x & (x - 1);
4. n++;
5. }
6. return n;
微軟筆試題:快速求取一個整數的7倍
乘法相對比較慢,所以快速的方法就是將這個乘法轉換成加減法和移位操作。
可以將此整數先左移三位(×8)然後再減去原值:X << 3 - X。
微軟筆試題:判斷一個數是不是2的n次冪
設要判斷的數是無符號整數X。
首先判斷X是否為0,如果為0則不是2的n次冪,返回。
X和X-1進行按位與操作,如果結果是0,則說明這個數是2的n次冪;如果結果非0,則說明這個數不是2 的n次冪。
證明:
如果是2的n次冪,則此數用二進製表示時只有一位是1,其它都是0。減1後,此位變成0,後面的位變成1,所以按位與後結果是0。
如果不是2的n次冪,則此數用二進製表示時有多位是1。減1後,只有最後一個1變成0,前面的 1還是1,所以按位與後結果不是0。
微軟筆試題:三隻螞蟻不相撞的概率是多少
在三角形的三個頂點上各有一隻螞蟻,它們向另一個頂點運動,目標隨機(可能為另外兩個頂點的任意一個)。問三隻螞蟻不相撞的概率是多少?
如果螞蟻順時針爬行記為0,逆時針爬行記為1。那麼三隻螞蟻的狀態可能為000,001,...,110,111中的任意一個,且為每種狀態的概率相等。在這8種狀態中,只有000和111可以避免相撞,所以螞蟻不相撞的概率是1/4。
微軟筆試題:判斷數組中是否包含重復數字
給定一個長度為N的數組,其中每個元素的取值范圍都是1到N。判斷數組中是否有重復的數字。(原數組不必保留)
給定一個長度為N的數組,其中每個元素的取值范圍都是1到N。判斷數組中是否有重復的數字。(原數組不必保留)
微軟筆試題:如何將蛋糕切成相等的兩份
一塊長方形的蛋糕,其中有一個小長方形的空洞(角度任意)。使用一把直刀,如何一刀將蛋糕切成相等的兩份?
通過長方形中心的的任意直線都能將長方形等分,所以連接兩個長方形的中心點的直線可以等分這個蛋糕。
一個沒有排序的鏈表,比如list={a,l,x,b,e,f,f,e,a,g,h,b,m},請去掉重復項,並保留原順序,以上鏈表去掉重復項後為newlist={a,l,x,b,e,f,g,h,m},請寫出一個高效演算法(時間比空間更重要)。
建立一個hash_map,key為鏈表中已經遍歷的節點內容,開始時為空。
從頭開始遍歷鏈表中的節點:
- 如果節點內容已經在hash_map中存在,則刪除此節點,繼續向後遍歷;
- 如果節點內容不在hash_map中,則保留此節點,將節點內容添加到hash_map中,繼續向後遍歷。
微軟筆試題:小明一家5口如何過橋?
小明一家過一座橋,過橋時是黑夜,所以必須有燈。現在小明過橋要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的媽媽要8秒,小明的爺爺要12秒。每次此橋最多可過兩人,而過橋的速度依過橋最慢者而定,而且燈在點燃後30秒就會熄滅。問:小明一家如何過橋?
小明與弟弟過去,小明回來,用4s;
媽媽與爺爺過去,弟弟回來,用15s;
小明與弟弟過去,小明回來,用4s;
小明與爸爸過去,用6s;
總共用29s。
題目的關鍵是讓速度差不多的一起走,免得過於拖累較快的一個人。
微軟筆試題:編一個程序求質數的和
編一個程序求質數的和,例如F(7) = 2+3+5+7+11+13+17=58。
方法1:
對於從2開始的遞增整數n進行如下操作:
用 [2,n-1] 中的數依次去除n,如果余數為0,則說明n不是質數;如果所有餘數都不是0,則說明n是質數,對其進行加和。
空間復雜度為O(1),時間復雜度為O(n^2),其中n為需要找到的最大質數值(例子對應的值為17)。
方法2:
可以維護一個質數序列,這樣當需要判斷一個數是否是質數時,只需判斷是否能被比自己小的質數整除即可。
對於從2開始的遞增整數n進行如下操作:
用 [2,n-1] 中的質數(2,3,5,7,開始時此序列為空)依次去除n,如果余數為0,則說明n不是質數;如果所有餘數都不是0,則說明n是質數,將此質數加入質數序列,並對其進行加和。
空間復雜度為O(m),時間復雜度為O(mn),其中m為質數的個數(例子對應的值為7),n為需要找到的最大質數值(例子對應的值為17)。
方法3:
也可以不用除法,而用加法。
申請一個足夠大的空間,每個bit對應一個整數,開始將所有的bit都初始化為0。
對於已知的質數(開始時只有2),將此質數所有的倍數對應的bit都改為1,那麼最小的值為0的bit對應的數就是一個質數。對新獲得的質數的倍數也進行標注。
對這樣獲得的質數序列累加就可以獲得質數和。
空間復雜度為O(n),時間負責度為O(n),其中n為需要找到的最大質數值(例子對應的值為17)。