-
S사 백엔드 코딩테스트 및 면접 내용일상 2019. 8. 11. 14:58
통신관련 S사 백엔드 개발자로 지원했던 내용을 정리해보았다.
코딩테스트
코딜리티(https://app.codility.com/programmers/)에 초대되서 3문제를 풀었다.
1. rather, harder 와 같이 키워드를 주면 해당 단어에서 틀린 스펠링의 갯수를 세는문제
public class test1_1 {
public static void main(String[] args) {
System.out.println(solution("a","z"));
}
public static int solution(String A, String B) {
int[] resultArrayA = createCntArr(A);
int[] resultArrayB = createCntArr(B);
int result = 0;
for(int i= 0 ; i < 26; i ++) {
result += Math.abs(resultArrayA[i] - resultArrayB[i]);
}
return result;
}
public static int[] createCntArr(String str) {
int[] arr = new int[26];
for(char c : str.toCharArray()) {
arr[c-'a']++;
}
return arr;
}
}
2. 2개의 리스트를 주고 그 리스트를 범위로 나타내었을때 중복되는 범위를 합친후 그 범위의 갯수를 구하는문제
import java.util.Arrays;
import java.util.Comparator;
public class test2 {
public static void main(String[] args) {
int[] A = { 11,3,13,15};
int[] B = { 12,4,100,1};
System.out.println(solution(A, B));
}
public static int solution(int[] A, int[] B) {
int N = A.length;
int[][] arr = new int[N][2];
for (int i = 0; i < N; i++) {
arr[i][0] = A[i];
arr[i][1] = B[i];
}
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] arg0, int[] arg1) {
return arg0[0] - arg1[0];
}
});
int disjoint = 0;
int fir = 0;
for (int sec = 1; sec < N; sec++) {
// first - second 비교
if (arr[fir][1] >= arr[sec][0]) { // overlap이 되는 경우
// first는 새로 생성된 interval
arr[sec][0]= arr[fir][0];
arr[sec][1]= Math.max(arr[fir][1], arr[sec][1]);
} else {
disjoint++;
}
fir = sec;
}
for(int i = 0; i < N; i++) {
System.out.println(Arrays.toString(arr[i]));
}
return disjoint+1;
}
}
3. DP를 구현하는 알고리즘 문제
public class test3 {
public static void main(String[] args) {
int[] A = {0,-5,2,1,2,3,1};
System.out.println(solution(A));
}
public static int solution(int[] A) {
int N = A.length;
int dp[][] = new int[N][N];
int minABS = Integer.MAX_VALUE;
for(int i=0; i<N; i++) {
dp[i][i] = A[i];
minABS = Math.min(minABS, Math.abs(dp[i][i]));
}
for(int i=0; i<N; i++) {
for(int j=i+1; j<N; j++) {
dp[i][j] = dp[i][j-1] + dp[j][j];
minABS = Math.min(minABS, Math.abs(dp[i][j]));
}
}
return minABS;
}
}
면접 내용
1분 자기소개
현재 개발중인 솔루션의 아키텍쳐를 그려주세요.
현재 개발중인 솔루션의 아키텍쳐를 개선하기위해서는 어떻게 해야 할까요?
스프링과 스프링부트의 차이점
spring DI란 무엇인가요?
spring component의 생명주기를 설명해주세요.
인터페이스를 사용하는 방법
python으로 데이터를 핸들링 하지 않고 spark를 사용하는 이유가 있나요?
개발자들에게 가장 중요하다고 생각 되는 책은 무엇인가요?
네트워크에서 L4,L7비교
queue 서비스 비교
결과
다음기회에...-_-ㅋㅋㅋ
문제는 어렵지 않았는데 잘못말한것도 있었고...
중간에 당황해서 어버버... 한게 컷나보다 ㅠㅠ