본문 바로가기

기술면접/내가 써보기

기술면접 1 - 1

1. C/C++ 차이

C는 절차지향적 언어로 순차적인 처리가 중요시 되고 프로그램 전체가 함수화 되어 함수끼리 유기적으로 연결되도록 만드는 프로그래밍 기법입니다.

클래스로 유사한 성질의 함수와 데이트를 하나의 그룹으로 모아놓고 그것을 즉시 사용하는 것을 객체라고 하는데, C++은 객체지향적 언어로 데이터를 객체화시키고, 그 객체에 의해 프로그램이 실행되도록 만드는 기법입니다.

 

2. 객체지향

모든 데이터를 객체로 취급하여 처리 요구받은 객체가 자기 자신의 안에 있는 내용을 가지고 처리하는 방식으로서 다루는 수법으로, 순차적 처리가 중요시 되는 절차지향은 크고 복잡한 프로그램을 구축하기 어렵기에 이 문제점을 해결하기 위해 객체지향을 사용합니다.

 

3. 메모리풀에 대한 설명과 사용시 이점

메모리풀은 메모리를 미리 할당 받아놓고, 사용자가 필요할 때 메모리를 제공하는 것을 말합니다.

new로 새롭게 메모리를 할당하는 연산은 cpu 리소스를 많이 차지하는데, 대량의 메모리가 빈번히 할당되고 삭제되는 서에서는 심각한 단점이라고 합니다. 그래서 메모리를 미리 할당시켜놓고 new를 할때마다 메모리풀에 있는 자원을 갖고와서 사용하여 단점을 보완할 수 있습니다.

 

4. 메모리 구조

실행할 프로그임의 코드가 저장되어 프로그램이 끝날때까지 메모리에 남아있는 코드영역, 전역변수와 정적변수가 저장되고 시작과 동시에 메모리가 할당되며 프로그램이 종료되어야 소멸되는 데이터 영역, 함수의 호출과 관계되는 지역변수와 매개변수가 저장되며 함수의 호출과 함께 할당되고 함수의 호출이 완료되면 소멸하는 스택영역, 사용자가 직접 관리할 수 있고 사용자에 의해 메모리 공간이 동적으로 할당되고 해제되는 힙영역이 있습니다.

 

5. 세마포어/뮤택스의 차이

둘다 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 것으로, 뮤텍스는 공유자원에 대한 접근권한이 1개만 가질 수 있는 반면에 세마포어는 여러개를 가질 수 있습니다.

 

6. 리스트/벡터의 차이

벡터는 메모리가 연속적으로 되어있어 읽는 속도가 빠르지만 맨뒤를 제외한 모든 곳의 삽입삭제는 밀고 당기는 비용이 발생하고, 리스트는 불연속적으로 나열되어 있어 읽는 속도는 벡터보다 느리지만 지점을 착아 연결된 링크만 수정하면 되어 삽입삭제가 효율적입니다.

 

7. 스택/큐의 차이

스택은 후입선출로 층처럼 순서대로 쌓인 자료구조에서 가장 마지막에 쌓인 맨 위에 있는 자료부터 순서대로 꺼내지는 것이고, 큐는 선입선출로 먼저들어온 순서부터 먼저 꺼내지는 것입니다.

 

8. 멀티프로세스 멀티쓰레드 차이

(동시에 두가지 이상의 루틴을 실행할 수 있는 역할이라는 공통점)

멀티프로세스는 여러개의 일을 복수의 프로세스가 처리하는 것인데, 프로세스간의 간섭이 거의 없어 구현할 때 신경쓸것이 덜하지만 복사로 인해 메모리를 많이 먹고 프로세스간 통신 코스트가 크다는 점이 있습니다.

멀티쓰레드는 한개의 일을 복수의 쓰레드가 처리하는 것인데, 공유 메모리를 써서 메모리를 적게 사용하며 하나의 일처리를 분산할 수 있지만, 쓰레드간의 간섭이 있어 잘 예상하고 구현해야합니다.

 

9. 정렬알고리즘에 해 말해보시오 -> 모르겠음

(특히 퀵소트에 대해 자세히 물어봄. 퀵소트의 경우 어떤 경우 n^2의 시간복잡도를 가지고 어째서 그런일이 발생하는가?)

정렬은 데이터 수집, 검색, 보관에 필요한 알고리즘이며 데이터를 저장하고 빼내오는데 걸리는 시간은 각 알고리즘에 따라 다릅니다.

 

10. 싱글스레드와 멀티스레드의 차이 효율성 비교

싱글쓰레드는 하나의 쓰레드로 두작업을 처리하는 경우에는 한 작업을 마친 후에 다른 작업을 시작하지만, 멀티쓰레드는 두개의 쓰레드로 작업하는 경우에는 짧은 시간동안 2개의 쓰레드가 번갈아 가면서 작업을 하여 동시에 두 작업이 처리되는 것과 같이 느끼게 됩니다. 그렇다고 쓰레드는 

 

11. 페이징에 대해 설명하시오 -> 모르겠음

(세그멘테이션, 프레멘테이션, 내부단편화, 외부단편화, 프레그멘테이션 회피방법)

 

12. 크리티컬렉션

 

13. 데드락

 

'기술면접 > 내가 써보기' 카테고리의 다른 글

기술면접 4  (0) 2019.06.10
기술면접 3  (0) 2019.06.09
기술면접 2  (0) 2019.06.09
기술면접 1 - 2  (0) 2019.06.07