기술 면접 질문 모음
2023. 9. 14. 16:29
lecture
운영체제 프로세스 프로세스와 스레드의 차이는 무엇인가요? 교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요? 교착상태의 해결법은 무엇인가요? 뮤텍스와 세마포어에 대해서 설명해 보시오. 컨텍스트 스위칭이란 무엇인가요? 경쟁 상태란 무엇인가요? 프로세스 혹은 스레드의 동기화란 무엇인가요? 사용자 수준의 스레드와 커널 수준의 스레드의 차이는 무엇인가요? CPU 스케줄링이란 무엇인가요? CPU 스케줄링 방법에는 대표적으로 어떤 것들이 있나요? 동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요? 메모리 프로세스에 할당되는 메모리의 각 영역에 대해서 설명해 주세요. 메모리 구조의 순서가 어떻게 되는가? CPU에서 가까운 순으로 말해보시오. 페이지와 세그멘테이션에 대해서 설명해 보시오...
애플리케이션에서 여러 개의 스레드를 사용하는 이유?
2023. 8. 17. 01:51
lecture/Java 멀티스레딩, 병행성 및 성능 최적화
1) 여러 개의 스레드를 사용하면 동시에 여러 개의 관련 작업을 실행 할 수 있어서, 애플리케이션의 반응성을 향상시킬수 있기 때문입니다. 또한 여러개의 작업을 동시에 실행하여 더 뛰어난 성능을 달성할 수도 있습니다. 2) 하나의 프로레스에 속한 다수의 스레드는 다음 항목을 공유합니다. 힙 코드 프로세스의 열린 파일 프로세스의 메타 데이터 3) 운영 체제는 어떤 방식으로 스케줄링한 스레드를 설계해야하나? 운영 체제는 각 스레드의 대한 동적 우선 순위를 유지하여 인터렉티브 스레드를 우선시하고 시스템의 특정 스레드가 기아 상태 가 되는것을 방지합니다. 이 코드는 어떤 작업을 수행하나요? Thread thread = new Thread(new Runnable() { @Override public void run..
lecture 2. 멀티 스레드 프로그램 구성
2023. 8. 17. 01:30
lecture/Java 멀티스레딩, 병행성 및 성능 최적화
Runnable 인터페이스로 다른 스레드에서 코드를 실행하는 방법과 진해지는 정도의 수준. 그리고 스레드 클래스의 유용한 기능을 알아보고 IDE를 사용해 스레드를 디버그 하는 법도 해볼게요. 1. 스레드 생성하는 방법 Java 에서는 JDK 가 모든 스레드의 관련 속성과 메서드를 스레드 클래스로 압축합니다. 그래서 새 스레드를 만들려면 새 스레드 객체부터 생성해야하죠!! 스레드 객체 자체는 기본적으로 비어있스빈다. 그러니 runnable 인터페이스를 구현하는 클래스의 객체를 해당 생성자에 전달해야합니다. run 메서드에 어떤 코드를 넣든 운영 체제가 스케줄링하자마자 새 스레드에서 실행될 겁니다. 자바 8부터는 람다로 줄일수 있죠?!?! 스레드 객체에서 start 메서드를 호출해 스레드를 시작해야합니다. ..
lecture 1. 스레딩 기초
2023. 8. 17. 00:38
lecture/Java 멀티스레딩, 병행성 및 성능 최적화
스택(stack) 은 메모리영역으로 지역 변수가 저장되고 기능이 실행되는 영역입니다. 그리고 명령어 포인터는 그냥 포인터 일뿐입니다. 스레드가 실행할 다음 명령어의 주소를 가리키느 역할을 한다. 왜 각각의 스레드가 자체 스택과 명령어 포인트를 가지는지 쉽게 이해하려면 각각의 스레드는 특정 순간에 서로 다른 함수를 이용해 다른 명령을 수행한다는것만 기억하자. 컨텍스 스위치 하나의 스레드 실행을 멈추고 다른 스레드를 스케줄링한 다음 다시 실행하는것이 컨텍스 스위치입니다. 동시에 많은 스레드를 다룰 때는 효율성이 떨어지기 때문입니다. 이것이 병행성을 위한 대가입니다. 우리가 생각을 가다듬고 집중력을 회복하는 시간과 똑같습니다. 집이나 직장에서 여러 일을 동시에 하면 생산성이 떨이지게 됩니다. 주변의 뱅하는 받..
멀티프로세싱과 멀티스레딩, 그리고 IPC
2023. 6. 1. 00:35
lecture
멀티프로세싱은 여러 개의 '프로세스' 즉 동시에 2가지 이상의 일을 수행 할 수 있는것을 말합니다. 이를 통해 하나 이상의 일을 병렬로 처리할 수 있으며 특정 프로세스의 메모리, 프로레스 중 일부에 문제가 발생되더라도 다른 프로세스를 이용해 처리할 수 있으므로 신뢰성이 높은 강점이 있습니다. 멀티스레딩 이란 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법이며 스레드끼리 서로 자원을 공유하기 때문에 효율성이 높습니다. 예를 들어 웹 요청을 처리할 때 새 프로세스를 생성하는 대신 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비하여, 한 스레드가 중단(blocked)되어도 다른 스레드는 실행(running)상태일 수 잇기 때문에 중단되지 않은 빠른 처리가 가능합니다. 또한, 동시성..
동기화 기법 -세마포어
2023. 6. 1. 00:02
lecture
동기화(Synchronization)가 필요한 이유 두 개의 프로세스가 동일한 공유된 메모리에 접근. - 프로세스는 서로 협동하여 규칙을 준수하며 사용 해야 한다. - 잘못된 연산을 없애고 일관성을 보장해야 한다. 응용프로그램에서 동기화 방식 Semaphore MUTEX Condition Variable T2 -> T3 순이다. - 우선순위는 T3 ->T2 ->T1 순이다. - 초기화 된 세마포어 변수 sem을 T1, T2, T3 각 3개의 스레드가 잠그려 하는 상황이다. - 세마포어를 잠글 때에는 sem_wait() 함수를, 풀어줄 때에는 sem_post() 함수를 사용한다. - T1이 sem을 잠그면서 sem의 count를 하나 감소시킨다. count가 0이 되면 이후 이 세마포어를 잠그려는 스레드는..
알고리즘 퀵 정렬(quicksort) 이란 ?
2023. 1. 30. 23:44
lecture
퀵 정렬은 병합정렬과 마찬가지로 Divide and Conquer 알고리즘입니다.(나누기와 정복). 퀵 정렬의 알고리즘은 pivot(피벗) 요소를 선택하고 선택한 피벗 요소보다 작은 모든 요소는 피벗의 왼쪽으로 이동하고 더 큰 요소는 모두 오른쪽으로 이동하도록 배열 요소를 재정렬합니다. 마지막으로 알고리즘은 피벗요소의 왼쪽과 오른쪽에 있는 하위 배열을 재귀적으로 정렬합니다. 이것을 퀵정렬의 핵심 프로세스 파티션이라고 합니다. 퀵 정렬 알고리즘의 단점 : 이미 정렬된 배열에서 pivot이 가장 크거나 가장 작으면 가장 큰 시간이 소요됩니다. 그림을 보시면 더 이해하기 쉬울거같습니다. 여러 가지 방법으로 분할을 할수 있습니다, 아주 간단한 논리입니다. 가장 왼쪽 요소부터 시작하여 더 작은 혹은 같은 요소의 ..
재귀용법 (recursive call, 재귀호출)
2023. 1. 17. 23:44
lecture
재귀용법이란 함수 안에서 동일한 함수를 호출하는 형태 여러 알고리즘 작성시 사용되므로 우리 모두가 익숙해야져야합니다. 또한, 팩토리얼을 구하는 알고리즘을 재귀호출을 활용해서 알고리즘 작성을 할것인데 같이 보면 좋을거같습니다. 5! = 5 x 4 x 3 x 2 x 1 6! = 6 x 5 x 3 x 2 x 1 = 6 x 5! = 6 x 5 x 4! n! = n x (n-1) x (n-2) x (n-3)! = n x (n-1)! 위와 같이 보이는것을 코드로 작성을 하게된다면 public static int factorialFunc2(int n) { if(n x) return SEARCH(x, Y.root.left) else return SEARCH(x, Y.root.right) 재귀와 반복의 차이점 일반적으로..
정렬 알고리즘 - 1
2023. 1. 15. 23:23
lecture
오늘은 버블 정렬(Bubble sort) , 선택정렬(Selection sort)와 삽입정렬(Insertion sort) 에 대해서 알아보도록하겠습니다. 정렬은 데이터의 탐색의 최적화를 만들기 위해 순서대로 나열해주는 기능입니다. 프로그래밍 컴퓨터 분야에서 사용하는 데이터의 경우 숫자의 순서나 어휘의 순서대로 정렬한 다음 사용해야 되는 경우가 거의 항상 발생합니다 이를 얼마나 효과적으로 해결할 수 있는 지가 정렬의 핵심입니다. 또한, 이진 탐색이라는 강력한 알고리즘을 사용하기 위해선 데이터의 정렬은 필수입니다. 버블 정렬은 굳이 요즘에 쓰이지 않는다고 합니다, 그 이유는 직관적으로는 이해가 쉬운 정렬로 구현하기 쉽지만 일반적으로 O(n^2) 의 시간복잡도를 갖기 때문에 실전에서는 거의 사용할 일이 없습니..
JSP - EL
2022. 1. 27. 11:58
lecture/JSP
EL (Expression Language) EL이란 JSP에서 저장객체를 출력할때 스크립팅을 전혀 쓰지 않을 수 있는 기술입니다. EL은 일종의 스크립트 언어로 자료 타입, 수치 연산자, 논리 연산자, 비교 연산자 등을 제공하며 표현식을 대체할 수 있습니다. EL의 사용법 Ex)표현식 => EL $(value) -EL 내부에 사용하는 연산자 1.산술: +,-,*,/,% 2.관계: ==,!=,= 3.조건: a?b:c (a조건식이 참이면 b를 실행, 거짓이면 c를 실행) 4.논리:&&,|| 액션태그와 EL -액션태그 -EL -> ${member.name} EL(내장객체.name) 내장객체 의미 1.pageScope JSP의 page 객체를 참조하는 객체 2.requestScope JSP의 requeset ..