1. 程式人生 > 實用技巧 >某公司筆試

某公司筆試

某公司的筆試裡有10單選、5多選、4程式設計、1壓軸(其實就是解答題,我還以為是程式設計題…最後程式設計題都沒做完想去寫它結果…),這裡我用印象寫下程式設計題。先寫自己當時的想法,明天去找找優化方法,有想法的小夥伴也可以在評論區發下或者私聊我。

  1. 給一個字串,要求變為字元不重複的字串,遇見重複的則以第一個出現的位置為準。如abcbdde->abcde。不允許使用集合類和contains等方法

我用的最暴力的方法,用StringBuilder物件去存字元。每次去存字元前,都要把StringBuilder已經存的全檢索一遍,如果已經存在就拋棄去看下個字元,如果不存在就存入StringBuilder,沒想到這樣都能過了全部的用例…

  1. 檔案開頭多種書的資訊,分為4類資訊
名字類別描述
idint書號
categoryint分類
wordsint字數
updatetimedate更新日期

輸入方式id,category,words,updatetime,每行一組
排序方式 category>updatetime>id>words
按這個順序輸出id

我的想法是寫一個book類,實現comparable介面,compareTo方法裡用巢狀的ifelse,來設定這個比較順序,大的往前放,相同則比較下一個屬性。把輸入資料變成一個book陣列,呼叫Arrays.sort方法來按照這個順序,結果自己竟然卡在了不會把字串轉成Date物件上…慚愧啊!!!比較方法也沒寫完。

  1. 輸出整數n轉為二進位制後1的個數,n>0

這個我的想法也比較簡單,就是每次%2。為1則count++,為0則不管,然後n=n/2,直到n=0為止。沒想到這樣就過了全部用例,本來還以為可能會有資料過大,要用大數或者字串來處理,沒想到過了…

  1. 給一個二維矩陣,然後把矩陣順時針旋轉90度,然後把矩陣元素一行一行輸入,輸入為一行字串,元素中間用,隔開。要求額外空間複雜度為O(1)

因為額外空間複雜度為O(1),那用二維陣列儲存矩陣之後就不能再用其他的陣列存了。其實順時針旋轉90度再輸出,就是把二維陣列按第0列開始,第n-1行開始,從下往上,從左往右輸出。這樣就不需要二維陣列先儲存再輸出了(其實先儲存也是按照這個順序存到二維陣列然後正常輸出而已)。

在這裡插入圖片描述

最後壓軸題問了一個AIO、BIO、NIO,原諒我還沒複習到…在答題區說了還不會十分抱歉…就交了…
解答題就解答題唄,為啥叫啥壓軸題,我還以為也是程式設計題,程式設計題還沒寫完就交了…

在這裡插入圖片描述