當然40分鐘,我也無法把任意兩題編碼完成,只是知道大概的解題思路,唯一能確定的,在面試規定時間內,第二題我是肯定可以在20分鐘內編碼完成。
題目一
基礎知識就是初中的平面直角座標系,解析思路:
計算總周長;
將各邊長的前後座標計算出來封裝好,第四步要使用;
根據k段值計算出平均分段後的長度;
然後迴圈k次,根據平均長度依次相加計算等分點的座標。
不多說,上**:
先定義座標的point類
class point public point(float x, float y) public point(point point) @override public string tostring() }n邊形的邊封裝類
class line public line(point begin, point end, float length) }現在上實現計算的類這段**第乙個版本的時候,在正方形偶數等分的時候,座標點計算不準確,今晚上看著**思考了10分鐘的樣子,稍微改動了下,暫時沒有這個bug了。其他的bug,期待大家一起發現,然後修復吧!
public class polygon else return length; } /** * 計算 周長 * * @return */ private static float totalsidelength(point points, line lines) } return side; } public static point division(point points, int divisionnum) divisionpoint[i] = new point(); float linelength = divisionlength * i; while (true) else line = lines[lineindex]; if (sumlength >= linelength) else break; } } } return divisionpoint; } private static void print(point points) } public static void main(string args) ; point divpoints = division(points, 8); print(divpoints); }}題目二
解題思路:
對應位數的數字相加,永遠不會超過18,所以,我們就先把對應位置的和計算出來,然後再反覆迴圈找到大於9的數,向高位進製。
這個比較簡單,只是考察個位數的正整數加法永遠不大於18這個細節。
上**:
public class linkaddition public numnode(int num) ; public numnode(int num, numnode next) } private static int length(numnode num) return length; } private static numnode calc(numnode a, numnode b, int alength, int blength) else resultnode.num = anode.num; anode = anode.next; if (anode != null) } return result; } public static numnode addition(numnode a, numnode b) else boolean isgreater9 = true; while (isgreater9) node = node.next; } // 沒有大於9且需要進製的節點 if (!isgreater9) break; node = result; if (node.num > 9) while (node.next != null) node = node.next; } } return result; } private static void print(numnode num) } public static void main(string args) }題目三
這個我寫的第乙個版本,只契合類那個舉例,然後瞬間就被我推翻類,最後坐下思考類10分鐘,把這個按照二維陣列的思路解析了。
先找到最高處,然後就以最高處為乙個維度,做迴圈計算出水量,還是上**吧:
public class water for (int i = 0; i < max; i++) num = steps[n] - i; index = n; } } } return waternum; } public static void main(string args) ; int water = waternum(steps); system.out.println(water); }}總結:其實這幾題本身的知識點並不難,都是平時用到的,就看怎麼轉化為**罷了。
第一題考察的直角座標系上怎麼計算邊長,然後根據均分等長從第一條邊挨著走,計算對應的座標,該知識點在初中就已學過。
第二題則是考察每位上的正整數加法到底最大能到多少,只要明白了這一點,把每一位上相加後,再統一做進製處理就可以了。
第三題的**量是最少的,我的解題思路是二位陣列的方式, 也不算難。
位元組跳動面試題
位元組跳動面試題 http協議 http協議是乙個應用層的協議,由請求和響應構成,使用統一資源識別符號來傳遞資料和建立連線 一次http請求的基本流程一般是,在建立tcp連線後,由客戶端向服務端發起一次請求 request 而伺服器在接收到以後返回給客戶端乙個響應 response 所以我們看到的h...
位元組跳動面試題
假如有兩台伺服器 server1和server2 這兩台伺服器上分別部署了相同的前端靜態檔案,index.html index.js 如果server1中的靜態資源被更新了,那麼此時會出現什麼問題?如何解決?通過控制 伺服器,讓客戶無感平滑公升級 root 當前頁面共有 files.length 個...
位元組跳動面試題
1 請分析以下 執行結果 async function a return result var p a p.abort 2 手寫乙個節流函式 手寫節流函式3 什麼是裝箱和拆箱 裝箱和拆箱操作,能夠在值型別和引用型別中架起一做橋梁。換言之,可以輕鬆的實現值型別與引用型別的互相轉換。裝箱是將值型別轉換為...