Google面试官亲授-Java面试新手尊享课

280 阅读4分钟

download:Google面试官亲授-Java面试新手尊享课

“裁员”、“缩招”、“末位淘汰”等成为互联网行业近期的关键字,各企业的招聘越来越严苛,就业形势十分严峻,在如此形势下如何 “鲤鱼跃龙门”?这门Java面试课就教你如何见招拆招。本课程专为 “职场新晋” 量身定制,由Google面试官倾力打造,让面试新手赢在起跑线,助力你快速达到一线公司(BAT、微软等)的面试录取水平,即使互联网寒冬,也助你拿到名企高薪Offer。

**

适合人群

**


应届生及工作1-2年的Java职场新人


**

技术储备要求

**


课程以大家熟悉的Java为主讲语言,部分内容以C++讲解,希望你已具


备计算机基础知识,具备基本的编码能力,至少学习过一门语言

import java.util.Scanner;
public class Calculate {
    private static Scanner in;//創立一個輸入對象
    public static void main(String[] args) {
        // TODO Auto-generated method stub
          Calculate i =new Calculate();
            int Max = 0;
            int Max1 = 0;
            in = new Scanner(System.in);
            System.out.print("請輸入數組的長度:");
            int j=in.nextInt();//輸入數組的長度
            System.out.print("請依次輸入數組:");
            int Arr[]=new int[j];//輸入數組
            for(int a = 0;a < j; a++){
                Arr[a]=in.nextInt();
            }
            int Arr1[]=new int [j];
            for(int a = 0; a < j; a++) {
                for(int b = 0; b < j; b++){
                    Arr1[b]=Arr[(b + a)%(j)];
                }
                Max=i.findMaxArr(Arr1);
                if(Max > Max1) {
                   Max1 = Max;
                }
            }
            System.out.print("最大的子數組和爲"+Max1);
        }
        public int findMaxArr(int[] arr) {
            int Arr = 0;
            int MaxArr = 0;
            int c = arr.length;
            int Location2=0;
            int a;
            for ( a = 0; a < c; a++) {
                Arr += arr[a];
                if (Arr < 0) {
                    Arr = 0;
                }
                if (Arr > MaxArr) {
                    MaxArr = Arr;
                  }
            }
           for(a = Location2; a >= 0; a--) {
              if(MaxArr-arr[a]==0) {
                   break;
              }
           }
            if (MaxArr == 0) {
                for ( a = 0; a < c; a++) {
                   if (a == 0) {
                       MaxArr = arr[a];
                   }
                    if (arr[a] > MaxArr) {
                        MaxArr = arr[a];
                    }
                  }
             }
            return MaxArr;
    }
}2,停止單元測試代码如下:import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class CalculateTest {
    private Calculate mcalculate;
    int[] Calculate = {1,4,5,-5,-1};
    @Before
    public void setUp() throws Exception {
        mcalculate =new Calculate();
    }
    @Test
    public void testMain() throws Exception {
    }
    @Test
    public void testFindMaxArr() throws Exception {
        assertEquals(10, mcalculate.findMaxArr(Calculate), 0);
}
}二、代码作風阐明1,分行定義變量            int Arr = 0;
            int MaxArr = 0;
            int c = arr.length;
            int Location2=0;
            int a;            2,缩進作風(indent)在有關代码作風的問題中,最爲顯眼的能夠說就是代码的缩進(Indent)了。所谓缩進,是經過在每一行的代码左端空出一局部長度,愈加明晰地從外觀上表現出程序的層次構造。三、單元測實驗證程序的正確性、以及運轉結果截圖1,運用的是Eclipse自帶的單元測試工具JUnit,首先點擊文件,新建,選择Junit Text Case,然後選择要測試的類和辦法,如圖1,![]()圖1操作過程圖創立勝利如圖2,![]()圖2創立勝利界面圖2,運轉結果如圖3:![]()圖3運轉結果3.測試結果(1)最大子數組爲局部,測試用例[1,4,5,-5,-1],最大子數組和10(如圖4)![]()圖4 測試結果勝利(2)最大子數組爲局部,測試用例[1,3,-1],最大子數組和4(如圖5)![]()圖5 測試結果勝利3,數組全爲零,測試用例[0,0,0],最大子數組和0(如圖6)![]()圖6 測試結果勝利4,數組全爲負,測試用例[-1,-3,-1],最大子數組和-1(如圖7)![]()圖7 測試結果勝利5,最大子數組爲真子集,測試用例[2,3,4],最大子數組和9(如圖8)![]()圖8 測試結果勝利6,最大子數組爲單一數,測試用例[1,-2,5,-1,-1],最大子數組和9(如圖9)![]()圖9 測試結果勝利四、性能剖析結果及改良1,盡量減少對變量的反復計算例如:明白一個概念,對辦法的調用,即便辦法中只要一句语句,也是有耗费的,包括創立栈帧、調用辦法時維護現場、調用辦法終了時恢復現場等。所以例如下面的操作:            int c = arr.length;
            for ( a = 0; a < c; a++) {
                Arr += arr[a];
                if (Arr < 0) {
                    Arr = 0;
                }
                if (Arr > MaxArr) {
                    MaxArr = Arr;
                  }
            }            而不是運用: for ( a = 0; a <arr.length; a++) {
                Arr += arr[a];
                if (Arr < 0) {
                    Arr = 0;
                }
                if (Arr > MaxArr) {
                    MaxArr = Arr;
                  }
            }2,盡量防止隨意運用静態變量3,不要創立一些不運用的對象,不要導入一些不運用的類這毫無意義,假如代码中呈現"The value of the local variable i is not used"、"The import java.util is never used",那麼請删除這些無用的内容。4,請晓得,在java中if (i == 1)和if (1 == i)是沒有區別的,但從阅讀習氣上講,倡議運用前者平常有人問,"if (i == 1)""if (1== i)"有沒有區別,這就要從C/C++講起。在C/C++中,"if (i == 1)"判別條件成立,是以0與非0爲基準的,0表示false,非0表示true,雖然Java的"if (i == 1)""if (1 == i)"在语義上沒有任何區別,從阅讀習氣上講,倡議運用前者會更好些。例如(加粗代码): for(a = Location2; a >= 0; a--) {
              if(MaxArr-arr[a]==0) {
                   break;
              }
           }
            if (MaxArr == 0) {
                for ( a = 0; a < c; a++) {
                   if (a == 0) {
                       MaxArr = arr[a];
                   }
                    if (arr[a] > MaxArr) {
                        MaxArr = arr[a];
                    }
                  }
             }