位元組跳動的三道編碼面試題的實現

2021-10-09 11:05:44 字數 2629 閱讀 6276

當然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 什麼是裝箱和拆箱 裝箱和拆箱操作,能夠在值型別和引用型別中架起一做橋梁。換言之,可以輕鬆的實現值型別與引用型別的互相轉換。裝箱是將值型別轉換為...