집 >Java >Java인터뷰 질문들 >답변이 포함된 Java 필기 테스트 필기 알고리즘 인터뷰 질문의 전체 모음
1. 영어 기사의 단어 수를 세어보세요. #… " 제작된 코드는 두 선생님께 바치는 헌사입니다. 아래 코드도 마찬가지입니다.
2. 연, 월, 일을 입력하고 해당 날짜가 해당 연도의 일수인지 계산합니다.
public class WordCounting { public static void main(String[] args) { try(FileReader fr = new FileReader("a.txt")) { int counter = 0; boolean state = false; int currentChar; while((currentChar= fr.read()) != -1) { if(currentChar== ' ' || currentChar == '\n' || currentChar == '\t' || currentChar == '\r') { state = false; } else if(!state) { state = true; counter++; } } System.out.println(counter); } catch(Exception e) { e.printStackTrace(); } } }3. 회문 소수: 소위 회문 숫자는 앞뒤로 읽는 동일한 숫자입니다(예: 11, 121, 1991.. .), back 회문수는 회문이면서 동시에 소수(1과 자기 자신으로만 나누어지는 수)인 수입니다. 11에서 9999 사이의 회문 소수를 찾는 프로그램입니다.
public class DayCounting {
public static void main(String[] args) {
int[][] data = {
{31,28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31,29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
Scanner sc = new Scanner(System.in);
System.out.print("请输入年月日(1980 11 28): ");
int year = sc.nextInt();
int month = sc.nextInt();
int date = sc.nextInt();
int[] daysOfMonth = data[(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)?1 : 0];
int sum = 0;
for(int i = 0; i < month -1; i++) {
sum += daysOfMonth[i];
}
sum += date;
System.out.println(sum);
sc.close();
}
}
4. 전체 순열: 다섯 숫자의 모든 순열은 12345입니다.
public class PalindromicPrimeNumber {
public static void main(String[] args) {
for(int i = 11; i <= 9999; i++) {
if(isPrime(i) && isPalindromic(i)) {
System.out.println(i);
}
}
}
public static boolean isPrime(int n) {
for(int i = 2; i <= Math.sqrt(n); i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
public static boolean isPalindromic(int n) {
int temp = n;
int sum = 0;
while(temp > 0) {
sum= sum * 10 + temp % 10;
temp/= 10;
}
return sum == n;
}
}
5의 경우 해당 하위 배열(배열에 연속적인 첨자가 있는 요소로 구성됨)의 최대값을 찾습니다. 배열의 합계 값).
아래에 몇 가지 예가 나와 있습니다(가장 큰 하위 배열은 굵게 표시됨).
Array: { 1, -2, 3,5, -3, 2 }, 결과는 다음과 같습니다: 8
2) 배열: { 0, -2, 3, 5, -1, 2 }, 결과 is : 93) 배열: { -9, -2,-3, -5, -3 }, 결과는 -2동적 프로그래밍 아이디어에 대한 솔루션을 사용할 수 있습니다:
public class FullPermutation { public static void perm(int[] list) { perm(list,0); } private static void perm(int[] list, int k) { if (k == list.length) { for (int i = 0; i < list.length; i++) { System.out.print(list[i]); } System.out.println(); }else{ for (int i = k; i < list.length; i++) { swap(list, k, i); perm(list, k + 1); swap(list, k, i); } } } private static void swap(int[] list, int pos1, int pos2) { int temp = list[pos1]; list[pos1] = list[pos2]; list[pos2] = temp; } public static void main(String[] args) { int[] x = {1, 2, 3, 4, 5}; perm(x); } }6. 재귀를 사용하여 문자열 반전 구현
public class MaxSum {
private static int max(int x, int y) {
return x > y? x: y;
}
public static int maxSum(int[] array) {
int n = array.length;
int[] start = new int[n];
int[] all = new int[n];
all[n - 1] = start[n - 1] = array[n - 1];
for(int i = n - 2; i >= 0;i--) {
start[i] = max(array[i], array[i] + start[i + 1]);
all[i] = max(start[i], all[i + 1]);
}
return all[0];
}
public static void main(String[] args) {
int[] x1 = { 1, -2, 3, 5,-3, 2 };
int[] x2 = { 0, -2, 3, 5,-1, 2 };
int[] x3 = { -9, -2, -3,-5, -3 };
System.out.println(maxSum(x1)); // 8
System.out.println(maxSum(x2)); // 9
System.out.println(maxSum(x3)); //-2
}
}
#🎜 🎜#7. 양의 정수를 입력하고 소수의 곱으로 분해합니다.
public class StringReverse { public static String reverse(String originStr) { if(originStr == null || originStr.length()== 1) { return originStr; } return reverse(originStr.substring(1))+ originStr.charAt(0); } public static void main(String[] args) { System.out.println(reverse("hello")); } }8 한 번에 1, 2, 3걸음씩 걸을 수 있습니다. 일종의 움직임이죠?
public class DecomposeInteger { private static List<Integer> list = new ArrayList<Integer>(); public static void main(String[] args) { System.out.print("请输入一个数: "); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); decomposeNumber(n); System.out.print(n + " = "); for(int i = 0; i < list.size() - 1; i++) { System.out.print(list.get(i) + " * "); } System.out.println(list.get(list.size() - 1)); } public static void decomposeNumber(int n) { if(isPrime(n)) { list.add(n); list.add(1); } else { doIt(n, (int)Math.sqrt(n)); } } public static void doIt(int n, int div) { if(isPrime(div) && n % div == 0) { list.add(div); decomposeNumber(n / div); } else { doIt(n, div - 1); } } public static boolean isPrime(int n) { for(int i = 2; i <= Math.sqrt(n);i++) { if(n % i == 0) { return false; } } return true; } }9. 영어 단어의 모든 문자가 다른지 확인하는 알고리즘을 작성하세요(대소문자 구분 안 함)
public class GoSteps { public static int countWays(int n) { if(n < 0) { return 0; } else if(n == 0) { return 1; } else { return countWays(n - 1) + countWays(n - 2) + countWays(n -3); } } public static void main(String[] args) { System.out.println(countWays(5)); // 13 } }
10. 중복 요소가 포함된 정렬된 정수 배열이 있습니다. 예를 들어 A= [1, 1, 2, 2, 3]입니다. 처리된 배열은 A= [1, 2, 3]이어야 합니다.
public class AllNotTheSame { public static boolean judge(String str) { String temp = str.toLowerCase(); int[] letterCounter = new int[26]; for(int i = 0; i <temp.length(); i++) { int index = temp.charAt(i)- 'a'; letterCounter[index]++; if(letterCounter[index] > 1) { return false; } } return true; } public static void main(String[] args) { System.out.println(judge("hello")); System.out.print(judge("smile")); } }
11. 절반 이상을 차지하는 중복 요소가 있는 배열이 있으면 이 요소를 찾으세요.
public class RemoveDuplication { public static int[] removeDuplicates(int a[]) { if(a.length <= 1) { return a; } int index = 0; for(int i = 1; i < a.length; i++) { if(a[index] != a[i]) { a[++index] = a[i]; } } int[] b = new int[index + 1]; System.arraycopy(a, 0, b, 0, b.length); return b; } public static void main(String[] args) { int[] a = {1, 1, 2, 2, 3}; a = removeDuplicates(a); System.out.println(Arrays.toString(a)); } }
12. 문자열의 바이트 길이를 구하는 메소드를 작성해 보세요.
public class FindMost { public static <T> T find(T[] x){ T temp = null; for(int i = 0, nTimes = 0; i< x.length;i++) { if(nTimes == 0) { temp= x[i]; nTimes= 1; } else { if(x[i].equals(temp)) { nTimes++; } else { nTimes--; } } } return temp; } public static void main(String[] args) { String[]strs = {"hello","kiss","hello","hello","maybe"}; System.out.println(find(strs)); } }
위 내용은 답변이 포함된 Java 필기 테스트 필기 알고리즘 인터뷰 질문의 전체 모음의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!