Time of Update: 2018-08-20
做架構設計已經好多年了,前兩天和一位年輕的同事聊天,這位同事從畢業到現在已經工作3年了,是我當前新公司裡面最年輕的Team leader(在我現在新的公司,Team leader職位上的人工作7,8年的佔80%),他現在感到很迷茫,說天天忙於溝通,基本上沒有時間寫代碼,但是自己以後又想往架構師的路上走下去,很糾結。於是一個加班的晚上,過來和我聊了一下自己的想法。其實這是一個典型的心態,到底以後是往技術走,還是往管理走。其實,說實在話,我1年前還有這個疑惑和顧慮,更何況年輕的他們呢。 大概半年前,
Time of Update: 2018-08-20
application 生命週期在整個應用程式中 生命週期為:應用程式啟動到停止. session 會話你可以設定他的時間 預設的是30分鐘 當你關閉瀏覽器 結束本次會話 使用者開始進行操作就產生一個唯一的session 每個session都分配了一個唯一的Id request是擷取資訊--通過使用者提交的表單,查詢字串,cookie等獲得資訊 session是服務端用來儲存一些資料(通常是標記狀態的,當然也可以儲存別的)
Time of Update: 2018-08-20
問題:地上有個 m 行 n 列的方格。一個機器人從座標(0,0)的格子開始移動,它每一次可以向左、右、上、下移動一格,但不能進入行座標和列座標的數位之和大於 k 的格子。 例如,當 k 為 18 時,機器人能夠進入方格(35,37),因為 3+5+3+7=18 但它不能進入方格(35,38),因為 3+5+3+8=19 請問該機器人能夠達到多少格子。 分析: 和前面的矩陣中的路徑類似,這個方格也可以看出一個 m*n
Time of Update: 2018-08-20
題目:請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中任意一格開始,每一步可以在矩陣中間向左、右、上、下移動一格。如果一條路徑經過了矩陣的某一格,那麼該路徑不能再次進入該格子。 例如:例如在下面的3*4的矩陣中包含一條字串”bcced”的路徑。但矩陣中不包含字串“abcb”的路徑,因為字串的第一個字元b佔據了矩陣中的第一行第二格子之後,路徑不能再次進入這個格子。
Time of Update: 2018-08-20
問題: 給定一個數組和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。 例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為{4,4,6,6,6,5}; 針對數組{2,3,4,2,6,2,5,1}的滑動視窗有以下6個: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,
Time of Update: 2018-08-20
問題:如何得到一個資料流中的中位元。如果從資料流中讀出奇數個數值,那麼中位元就是所有值排序之後位於中間的數值。如果資料流中讀出偶數個數值,那麼中位元就是所有數值排序之後中間兩個數的平均值。 分析:下面總結使用了沒有排序的數組、排序的數組、排序的鏈表、二叉搜尋樹、AVL數、最大堆和最小堆幾種不同的資料結構的時間複雜度。 思路:綜合考慮用堆實現,考慮將資料序列從中間開始分為兩個部分,左邊部分使用大根堆表示,右邊部分使用小根堆儲存。
Time of Update: 2018-08-20
問題:從上到下按層列印二叉樹,同一層的結點按從左至右的順序列印到一行。例如: 列印結果: 8 6 10 5 7 9 11 分析:為了把二叉樹的每一行單獨列印到一行裡,我們需要兩個變數:一個變數表示在當前層中還沒有列印的結點數,另一個變數表示下一層結點的數目。
Time of Update: 2018-08-20
問題: 請實現一個函數按照之字形列印二叉樹,即第一行按照從左至右的順序列印,第二層按照從右至左的順序列印,第三行按照從左至右的順序列印,其他行以此類推。例如: 分析: 按照廣度優先遍曆來遍曆二叉樹,但是需要按照之字形來列印: 奇數行從左至右,跟BFS的遍曆順序一樣,而偶數行從右至左,跟BFS的遍曆順序相反。 因此可以通過兩個棧來實現,一個實現先進先出,即入棧順序為右子節點、左子節點;一個實現後進先出,即入棧順序為左子節點、右子節點 詳細的實現代碼如下:
Time of Update: 2018-08-20
問題:請實現一個函數來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的鏡像一樣,那麼它是對稱的。 詳細的設計代碼如下: bool isSymmetrical(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2);//判斷是否為對稱樹bool isSymmetrical(BinaryTreeNode* pRoot){ return isSymmetrical(pRoot, pRoot)
Time of Update: 2018-08-20
問題:給定一個二叉樹和其中的一個結點,請找出中序遍曆順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。 思路:此題包含三步: 1. 如果此節點有右子樹,下一個節點為右子節點的最左邊的節點。 2.如果此節點沒有右子樹,並且如果此節點是其父節點的左子節點,則下一個節點為父節點。 3.如果此節點沒有右子樹,並且如果此節點是其父節點的右子節點,則一直向上找,直到找到第一個是其父節點左節點的節點,下一個節點就為此節點。
Time of Update: 2018-08-20
問題:在一個排序的鏈表中,如何重複資料刪除的結點。例如下圖情況: 詳細的實現代碼如下: //重複資料刪除的結點void deleteDuplication(ListNode** pHead){ if(pHead == NULL || *pHead == NULL) return; ListNode* pPreNode = NULL; ListNode* pNode = *pHead; while(
Time of Update: 2018-08-20
問題:一個鏈表中包含環,如何找出環的入口結點。例如下圖環的入口結點為3. 詳細的設計代碼如下: ListNode* MeetingNode(ListNode* pHead){ if(pHead == NULL) return NULL; ListNode* pSlow = pHead->m_pNext; if(pSlow == NULL) return NULL;
Time of Update: 2018-08-20
問題:請實現一個函數用來判斷字串是否表示數值。(包括整數和小數) /** Question Description:* (Question 12 in <Coding Intervies>) How do you check whether a string stands for a number or not?* Numbers include positive and negative integers and floats. For example,
Time of Update: 2018-08-20
問題:給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*.....*A[i-1]*A[i+1]*....*A[n-1]. 演算法思想:把B[i]看成C[i],D[i]兩個部分的乘積所的C[i]=A[0]*A[1]*.....*A[i-1],D[i]=A[i+1]*....*A[n-1]. #include <vector>
Time of Update: 2018-08-20
一、貨幣兌換總數 public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); while (t-- > 0) { int N = in.nextInt(); int K = in.nextInt(); int[] coins = new int[N]; for (int i
Time of Update: 2018-08-20
TOP N問題 如何在海量資料中找出重複最多一個。 通過hash映射為小檔案 通過hash_map統計各個小檔案重讀最多的並記錄次數 對每個小檔案重複最多的進行建立大根堆 上億有重資料,統計最多前N個。 記憶體存不下 通過hash映射為小檔案 通過hash_map統計各個小檔案重讀最多的並記錄次數 對每個小檔案重複最多的進行建立大根堆並重複N次取走堆頂並重建堆操作
Time of Update: 2018-08-20
一、十進位數表示成二進位中1的個數 public static void main(String[] args) { Scanner in = new Scanner(System.in); int a=in.nextInt(); int b=in.nextInt(); int c=in.nextInt();
Time of Update: 2018-08-20
**原題連結:**點這兒網易的題還是有技術含量的,二分和數學和優美暴力考察得較多,這些東西在工作中確實很重要,都是最佳化程式的方法。# 第一題:牛牛找工作## 題目:> 為了找到自己滿意的工作,牛牛收集了每種工作的難度和報酬。牛牛選工作的標準是在難度不超過自身能力值的情況下,牛牛選擇報酬最高的工作。在牛牛選定了自己的工作後,牛牛的小夥伴們來找牛牛幫忙選工作,牛牛依然使用自己的標準來協助小夥伴們。牛牛的小夥伴太多了,於是他只好把這個任務交給了你。## 輸入描述:>
Time of Update: 2018-08-20
平衡二叉樹(Balanced Binary Tree)是二叉尋找樹的一個進化體,也是第一個引入平衡概念的二叉樹。1962年,G.M. Adelson-Velsky 和 E.M. Landis發明了這棵樹,所以它又叫AVL樹。平衡二叉樹要求對於每一個節點來說,它的左右子樹的高度之差不能超過1,如果插入或者刪除一個節點使得高度之差大於1,就要進行節點之間的旋轉,將二叉樹重新維持在一個平衡狀態。這個方案很好的解決了二叉尋找樹退化成鏈表的問題,把插入,尋找,刪除的時間複雜度最好情況和最壞情況都維持在O(
Time of Update: 2018-08-20
問題:給定平面上N個點的座標,找出距離最近的兩個點。 解法一.蠻力法(兩兩之間的差值都求出來)時間複雜度O(N*N) 解法二:一維情況下排序求解時間複雜度O(N*logN) 解法三:分治思想,用於一般的情況 思想如下:(1)根據水平方向的座標把平面上的N個點分成兩個部分Left和Right (2)