개발자 기술 면접 준비자료(1)

기남·2023년 5월 8일
0
post-thumbnail

🎈 절차지향 vs 객체지향

구분
절차지향 프로그래밍
객체지향 프로그래밍
프로그램의 구성 방식순차적인 명령어의 집합으로 프로그램을 구성객체들의 상호작용으로 프로그램을 구성
데이터와 함수의 관리 방식데이터와 함수를 분리된 엔티티로 취급데이터와 함수를 하나의 객체로 묶어서 관리
코드 재사용성함수나 코드 블록을 재사용하는 것이 일반적상속, 다형성 등의 개념을 통해 코드의 재사용성을 높일 수 있음
복잡도 관리데이터와 함수의 분리로 인해 복잡도를 관리하기 어려움추상화와 캡슐화를 통해 복잡도를 관리
확장성복잡한 프로그램에서 새로운 객체나 기존 객체를 확장하기 어려움상대적으로 쉽게 새로운 객체를 추가하거나 기존 객체를 확장할 수 있음

🧨 빅오표기법 정의

모든 nn, nn0n\geq n_0에 대해 f(n)cg(n)f(n)\leq cg(n)인 조건을 만족시키는

두 양의 상수 ccn0n_0가 존재하면 f(n)=O(g(n))f(n)=O(g(n))이다.

🎃 프로세스 vs 쓰레드

프로세스쓰레드
메모리 공간독립적인 메모리 공간프로세스 내에서 메모리를 공유
실행 흐름각각의 프로세스는 병렬로 실행됨같은 프로세스 내에서 번갈아 가며 실행됨
스케줄링각각의 프로세스는 운영체제에서 독립적으로 스케줄링됨같은 프로세스 내에서 스케줄링됨
종료 다른 프로세스에서 생성된 프로세스는 운영체제에서 종료될 때까지 실행됨같은 프로세스 내에서 생성되며, 프로세스가 종료될 때 함께 종료됨

🎄 PNG와 JPG의 차이점

JPG손실 압축 방식을 사용하며 사진과 같은 복잡한 이미지를 저장하는데 적합

PNG무손실 압축 방식을 사용하며 아이콘과 같은 단순한 이미지를 저장하는데 적합

특히, PNG는 알파 채널을 지원하기 때문에 투명한 배경을 표현할 수 있음

🎋 Dynamic Programming

문제를 부분 문제들로 나누어 가장 작은 부분 문제를 먼저 해결하고,

그 답을 이용해 점차 더 큰 부분 문제를 해결하여 최종 문제를 해결하는 알고리즘

🎎 Virtual Memory

사용자가 실제 물리적인 메모리(RAM)보다 더 큰 용량의 메모리를 사용한다고 생각할 수 있도록 가상 메모리 공간을 제공하는 기술

Virtual Address를 Physical Address로 매핑하는 다양한 기법(Base and Bounds, Segmentation, Paging)이 있음

프로그램이 특정 페이지를 필요로 할 때 메모리에 올리는 Demand-paging 기법을 사용함

🎏 Semaphore

운영체제의 공유 자원을 여러 프로세스 혹은 쓰레드가 사용함에 따라 발생하는 Race Condition를 방지하기 위해 자원의 할당을 제한하는 기법

P 연산 : 세마포어 값이 양수면 1 감소시키고, 값이 0이면 해당 작업을 대기 큐에 추가

V 연산 : 세마포어 값을 1 증가시키고, 대기 큐에서 작업을 하나 꺼내서 실행함

🎐 Cache

짧은 미래에 다시 요청할 만한 데이터를 따로 복사해 두어 해당 데이터로의 접근 속도를 빠르게 해주는 장치

CPU 캐시
CPU가 RAM을 직접 참조하지 않아도 중요한 데이터에 바로 접근할 수 있도록 함

L1, L2, L3의 Hierachy로 구성되며 캐시에서 멀어질수록 Hit cost는 감소, Size는 증가

Direct-mapped 캐시와 Associative 캐시의 종류가 있음

웹 캐시
주로 웹 브라우저에 구현되어 있으며, 사용자가 방문한 웹 페이지의 데이터를 저장해 두어 같은 요청이 들어왔을 때 HTTP 요청 없이 바로 데이터를 받을 수 있도록 해주는 장치

DNS 캐시
사용자가 요청한 도메인 이름에 매칭되는 IP주소를 저장해 두어 또다시 IP주소를 찾을 필요 없이 바로 반환할 수 있도록 해주는 장치

🎑 Garbage Collection

메모리 누수를 방지하기 위해 프로그램이 할당한 메모리 중에서 더 이상 사용하지 않는 부분을 해제해 영역을 비우는 메모리 관리 기법

Reference Counting, Mark and Sweep, Two-Space Copying Collectors 기법이 있음

🎁 Database index 추가의 장단점

장점
테이블의 데이터에 접근하는 쿼리의 속도를 높일 수 있다

단점
인덱스 테이블을 저장하는데 추가의 저장공간이 필요하며, 데이터가 변경될 때 인덱스도 변경해야 하므로 유지보수 비용이 든다

🎀 NoSQL의 장단점

장점
정해진 Schema와 Relation이 없기 때문에 구조가 다른 데이터를 함께 저장할 수 있으며 유연성이 좋다

단점
데이터 중복이 발생하면 모든 컬렉션을 돌아보며 업데이트해야 한다.

🎀 SQL의 장단점

장점
정해진 Schema에 따라 관계형 테이블에 저장하므로 데이터를 일관적이고 중복 없이 다룰 수 있으며 데이터를 검색하는 강력한 쿼리를 사용할 수 있다

단점
데이터가 항상 정형화되어야 하기 때문에 유연하지 않고 수정하기가 힘들며, 테이블이 분산되어 있는 경우가 많기 때문에 여러 Join문이 얽힌 복잡한 쿼리가 만들어질 수 있다

🎫 공유기의 원리

LAN 포트에 연결된 디바이스들에 사설 IP를 부여해 인터넷에 접속할 수 있게 해주며,

패킷을 라우팅해주어 인터넷에서 통신할 수 있도록 해준다.

디바이스가 외부와 통신할 때 NAT 프로토콜을 사용하여 공유기의 공인 IP로 패킷을 송수신한다.

공유기는 연결된 디바이스들에 ARP 요청을 보내 MAC 주소를 알아내고, 이를 ARP 테이블에 저장한다.

이렇게 구한 MAC 주소는 공유기가 수신 받은 패킷을 어떤 디바이스에게 보낼지 결정하는데 사용된다.

이외에도, 공유기는 서브넷을 형성하며 디바이스에 IP주소를 할당할 때 DHCP를 사용한다는 점을 알아두자.

🎠 비대칭 암호화

공개키(모두에게 공개됨)와 개인키(사용자만 알고 있음)를 사용해 비대칭적으로 암호,복호화하는 기법

네트워크 보안성

  • Authentication(인증) : 사용자가 본인이 맞는지 확인
  • Confidentiality(기밀성) : 데이터를 보호하고 권한이 없는 사용자가 데이터에 접근하지 못하도록 보장
  • Integrity(무결성) : 데이터가 위조되거나 변경되지 않았음을 보장
  • Availibility(가용성) : 서비스가 항상 사용 가능하고 시스템이 정상적으로 작동하는 것을 보장

Public key Certification Authorities(CA)
사용자의 Public Key를 CA의 Private Key로 암호화한뒤 인증이 필요할 때 CA의 Public Key로 복호화함으로써 공개키를 안전하게 전달할 수 있게 해주는 기관

이메일 무결성
이메일 내용을 해시함수에 투입시킨 뒤 이를 개인키로 암호화하여 전달한다. 이후 수신자가 공개키로 복호화한 뒤 해시값을 이메일과 비교하면 내용의 변경 유무를 알 수 있다

🎪 HDD, SSD, DRAM 각각의 성능

HDD
회전 플래터에 파일을 쓰고 Disk arm을 해당 위치로 이동하여 데이터를 읽는다. 이렇게 데이터를 읽기까지 Seek time + Rotational latency + Transfer time이 소요되며 일반적으로 최대 200MB/s의 속도를 갖고 있다.

SSD
움직이는 부품 없이 전기 신호를 이용해 셀에 데이터를 쓰고 읽기 때문에 대체로 HDD보다 속도가 빠르다. 일반적으로 최대 600MB/s의 속도를 가지며 고성능의 SSD는 최대 5~6GB/s의 속도를 갖는다.

DRAM
데이터를 일시적으로 저장하는 메모리로, CPU가 필요한 데이터에 빠르게 접근할 수 있도록 해준다. 일반적으로 HDD, SSD보다 훨씬 빠르게 동작하며 DDR4 DRAM의 경우 최대 25.6GB/s의 속도를 갖는다.

profile
AI 공부하는 대학생

0개의 댓글

관련 채용 정보