Dev 126

11. 기술면접 전 보고가면 좋은 내용 공유

1. 스레드 와 프로세스의 차이는? 프로세스는 메모리에 올라와 실행 중인 프로그램 인스턴스이고 스레드는 프로세스내에서 실행되는 여러 흐름의 단위 입니다. 멀티 프로세싱 - 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것 장점: 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산 되지 않는다. 단점: Context Switching에서의 오버헤드 Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생. 프로세스 사이의 어렵고 복잡한 통신기법(IPC) 프로세스는 각각 독립된 메모리 영역을 할당받았기 때문에 하나의 프로그램에 속하..

Dev 2021.04.06

10. [자바] 자바 개발자 면접 질문 정리

Q. JVM, JRE, JDK의 차이점에 대해 설명해주세요. A. JVM은 자바 가상머신, 구현체 및 표준으로, class 파일을 OS에 특화된 코드로 바꾸어주는 표준입니다. JRE는 11버전 이전과 이후로 나눌 수 있는데, JVM + Library 로 구성되어 실행에 필요한 배포판을 만들어 줍니다. 하지만 개발 툴은 지원하고 있지 않습니다. JDK는 JRE + 실행 툴로 구성되어있고, JAVA를 class 로 바꾸어주는 javac를 가지고 있습니다. Q. 자바는 무엇인가요? A. 언어 그 자체입니다. JDK 내부의 javac 컴파일러를 이용하여 class 파일 로 변환 가능합니다. Q. 자바 유료화 이슈가 한때 자주 등장하곤 했습니다. 이에 대한 자신의 생각을 말해주세요. A. 많은 사람들이 자바가 유..

Dev 2021.04.02

[백준] 그래프의 탐색 (DFS, BFS)

그래프의 탐색에는 깊이우선 탐색과, 너비우선 탐색 방법 두가지 방법이 존재한다. 각각을 구할 때, 인접행렬로 구하는 방식이 있고, 간선 리스트로 구하는 방식이 존재한다. 인접행렬은 이차원배열이기 때문에 O(N^2)의 시간이 걸리고, 간선리스트는 간선의 합만큼만 시간복잡도가 걸리기 때문에 O(V+E) 의 시간복잡도가 존재한다. 시간을 최소화 하고싶다면 간선리스트로 구현하자! 1260번. DFS와 BFS https://www.acmicpc.net/problem/1260 더보기 def dfs(n,v): global arr,check check[v] = True print(v,end=' ') for i in range(1,n+1): if arr[v][i] == 1 and check[i] == False: dfs..

Dev/Algorithm 2021.03.27

[백준] 재귀함수 사용하기

가능한 경우, 불가능한 경우, 이외의 경우 셋으로 나눠서 설계하자 1,2,3 더하기 해당 문제는 재귀를 모를 당시에는 정말 어려웠는데,, 이제는 왜 그렇게 푸는지도 이해가 되고, 어떻게 풀어야할지도 이해가 어느정도는 된다. 신기하다. 하면 할수록 느는 것인디 왜 그렇게 하기싫어했을까. https://www.acmicpc.net/problem/9095 더보기 def solution(sum, goal): ans = 0 if sum > goal:# 1. 불가능한 경우 return 0 if sum == goal:# 2. 정답인 경우 return 1 # 3. 이외의 경우 ans += solution(sum+1,goal) ans += solution(sum+2,goal) ans += solution(sum+3,go..

Dev/Algorithm 2021.03.15

[백준] N중 for문

N개 중, 일부를 선택해야하는 경우에 사용한다. 사용할 일이 거의 없음(10중 포문 만들어야 하기 때문에,,) 1, 2, 3 더하기 https://www.acmicpc.net/problem/9095 더보기 t = int(input()) for _ in range(t): ans = 0 n = int(input()) for l1 in range(1, 4): if l1 == n: ans += 1 for l2 in range(1, 4): if l1+l2 == n: ans += 1 for l3 in range(1, 4): if l1+l2+l3 == n: ans += 1 for l4 in range(1, 4): if l1+l2+l3+l4 == n: ans += 1 for l5 in range(1, 4): if l1..

Dev/Algorithm 2021.03.10

[백준] 브루트 포스

- 모든 경우의 수를 다 해보는 것 - 다 해보는 시간이 크진 않아야 한다. = 문제의 제한시간을 넘지는 말아야 한다. 해결 3단계 1. 문제의 해결 가능한 경우의 수를 어림잡아보자. 0~9999? 음.. 그럼 10^4번 하면 되겠구만.. 이정도? 2. 가능한 모든 방법을 만들어보자. for문? 순열? 재귀? ... 3. 각각의 방법을 이용해 답을 구해보자 이건 먼말인지 모르겠음. 그냥 다 해보기 일곱 난쟁이 https://www.acmicpc.net/problem/2309 더보기 def solution(arr, sum): ans = [] for i in range(len(arr)): for j in range(i,len(arr)): if sum-arr[i]-arr[j] == 100: for k in a..

Dev/Algorithm 2021.03.09

[백준] 나머지 연산, 최대공약수, 최소공약수

1. 나머지 연산 정답을 1000,000,007로 나눈 나머지를 출력하자. 구하는 과정에서 나눠서 계산하는 풀이. 1. 덧셈, 곱셈은 매번 나머지 연산을 수행해서 계산해도 된다. 예) (6+3) % 3 = ((6%3) + (3%3)) % 3 2. 음수일 경우 언어별로 결과가 달라진다.(나는 파이썬이니까 상관 없음) 3. 나눗셈의 경우 잘 안나오니까 일단 패스 https://www.acmicpc.net/problem/10430 더보기 A,B,C = map(int,input().split()) print(((A + B) % C)) print(((A % C) + (B % C)) % C) print(((A * B) % C)) print(((A % C) * (B % C)) % C) 2. 최대공약수 중요한 알고리즘..

Dev/Algorithm 2021.03.08