前言
前兩天有群友在說,去華為面試的時候遇到了機試部分,但是沒有提前做準備,導致涼涼了,所以小編連忙準備了一些各大廠的機試題,以便不時之需,

一:字串最后一個單詞的長度:
題目:輸入為數個單詞,以空格隔開;要求輸出最后一個單詞的長度,
思路:讀入字串,求出字串具體長度l,然后指標從后往前直到指向空格,記錄此時的下標i,則最后一個字串的長度為l+1-i
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
二:計算字符個數
題目:寫出一個程式,接受一個由字母和數字組成的字串,和一個字符,然后輸出輸入字串中含有該字符的個數,不區分大小寫,
思路:注意到不區分大小寫,查詢ASCII碼得知,大寫字母與小寫字母相差32(如A其值為65,而a其值為97,其他類推),所以便利陣列時,查詢條件除了s[i]==a還要加上“或(s[i]+32)==a或(s[i]-32)==a"
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
三:明明的亂數
題目:實際上就是輸入多行資料,第一個為該行個數,剩下的是資料(注意是回圈輸入)要求將輸入的資料排序去重(注意到數值在0到1000,而且都是整數,
思路:由于輸入的都是整數且有范圍限制,所以最多的輸出就是從0到1000全輸出,所以申請一個a[1001]已經足夠,譬如輸入7則a[7]==1,然后輸出時便利標記陣列,為一的輸出陣列下標即可,
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
四:字串分割
題目:連續輸入字串,請按長度為8拆分每個字串后輸出到新的字串陣列;
?長度不是8整數倍的字串請在后面補數字0,空字串不處理,只輸入兩次,
思路:由于固定給出2次,運用函式思想,寫出字串分割函式呼叫兩次即可,注意到函式用到了遞回的思想,
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
五:進制轉換
題目:寫出一個程式,接受一個十六進制的數,輸出該數值的十進制表示,(多組同時輸入 )
思路:直接呼叫系統函式即可
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 |
|
六:質數因子
題目:要求輸入long 型整數,從小到大輸出其址因子
思路:從2開始,反復取余,如果為0,代表2是其因子,但注意到除2以后仍可能被2整除,故2不變;若不為0,需要將2加一變為3,進入下個回圈,
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
七:取近似值
題目:寫出一個程式,接受一個正浮點數值,輸出該數值的近似整數值,如果小數點后數值大于等于5,向上取整;小于5,則向下取整,
思路:加上0.5后取整即可
代碼如下:
| 1 2 3 4 5 6 7 8 9 |
|
八:合并表記錄
題目:資料表記錄包含表索引和數值(int范圍的整數),請對表索引相同的記錄進行合并,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出
思路:由于測驗用例不超過1000,故可以延續”明明的亂數“的思路,申請一個長度為1000的陣列,但注意到一旦輸入key值相同則將value 累加到a[key],隨后遍歷輸出即可
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
九:提取不重復的整數
題目:輸入一個int型整數,按照從右向左的閱讀順序,回傳一個不含重復數字的新的整數,
思路:整數只有10個,開辟一個長度為10 的標記陣列,初始化為0,每次進行判斷,第一次肯定不重復為零,然后將標記加一,隨后每次判斷,若標記不為零,代表以經重復,不累加計算,
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
十:字符個數統計
題目:撰寫一個函式,計算字串中含有的不同字符的個數,字符在ACSII碼范圍內(0~127),換行表示結束符,不算在字符里,不在范圍內的不作統計,
思路:仍然延續前面的思路,開辟一個長度為128 的標記陣列,隨后累加標記值不為一的個數即可,
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
十一:數字顛倒
題目:輸入一個整數,將這個整數以字串的形式逆序輸出
程式不考慮負數的情況,若數字含有0,則逆序形式也含有0,如輸入為100,則輸出為001
思路:呼叫系統函式,注意要參考algorithm庫
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 |
|
十二:字串反轉
題目:寫出一個程式,接受一個字串,然后輸出該字串反轉后的字串,(字串長度不超過1000)
思路:呼叫系統函式即可
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 |
|
十三:句子逆序
題目:將一個英文陳述句以單詞為單位逆序排放,例如“I am a boy”,逆序排放后為“boy a am I”
所有單詞之間用一個空格隔開,陳述句中除了英文字母外,不再包含其他字符
思路:類同11,12,不過是型別換位了string型別,我們呼叫容器即可,注意到用空格隔開,而最后一個字符后沒有空格,
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
十四:字串的鏈接最長路徑查找
題目:給定n個字串,請對n個字串按照字典序排列,輸入第一行為一個整數記錄數字個數,第二行為資料,
思路:仍然是呼叫系統函式進行排序,主要是正確使用容器即可,先將輸入的字串裝入容器,利用系統函式排序,我們可以將代碼中的vector<string>::iterator p中的p 視為指標指向每一個字串,隨后順序輸出即可
代碼如下:</string>
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
十五:求int型整數在記憶體中存盤時1的個數
題目:輸入一個int型的正整數,計算出該int型資料在記憶體中存盤時1的個數,
思路:記憶體中的數都是0101即二進制,我們將其轉換成二進制即可,”除2取余,倒序排序,高位補零“但我們不用這么麻煩,每次取余不為零時可知二進制中必有1,此時計數即可,
代碼如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
總結
做了那么多題,每一個題都有不同的解決方案,更重要的還是思路,多想多做,加油!
小編還整理了更多JAVA面試題:戳這里免費領取,暗號:CSDN,還有更多大廠面試專題資料和視頻哦!



寫文不易,覺得有幫助還請點贊關注支持一下小編,也歡迎各位大佬提出問題,感謝!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/171737.html
標籤:其他
上一篇:集智智能課程表專案 實戰指南
