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];
}
}
}