모의면접에서 직접 들었던 질문 리스트
- HTTP와 HTTPS의 특징과 차이점에 대해서 설명하세요.
- 두 개념 모두 OSI의 응용계층의 프로토콜이고 클라이언트와 서버간의 통신을 위한 일종의 통신규칙입니다. HTTPS의 경우에는 보안을 위해서 브라우저와 서버가 데이터를 전송하기 전에 암호화된 연결을 사용하여 더 높은 신뢰를 제공합니다.
- ISO 계층에 대해 설명하고 슬렉에 비유해서 설명하세요.
- 데이터를 주고받는 과정의 단계
- 물리계층 - RS-485, RS-232
- 데이터링크계층 - 이더넷
- 네트워크계층 - IP
- 전송계층 - TCP, UDP
- 세션계층 - SSH
- 표현계층 - ASCII
- 응용계층 - HTTP
- 응용계층에서 사용자는 슬랙을 통해 메시지를 작성하고 전송합니다.
- 사용자가 작성한 메시지는 표현계층에서 네트워크에서 사용될 수 있도록 인코딩됩니다.
- 세션계층에서 슬랙서버와의 연결상태를 유지합니다.
- 전송계층에서 데이터가 순서대로 도착하도록 관리합니다.
- 네트워크계층에서 발신자 -> 슬랙서버 -> 수신자의 IP로 메시지가 전달됩니다.
- 데이터링크계층에서 데이터를 수신자의 로컬 네트워크로 전송합니다.
- 전송받은 데이터가 물리적인 네트워크를 통해 전달됩니다.
- TCP와 UDP에 대해서 설명하고 유튜브에 비유해서 설명하세요.
- TCP의 경우 신뢰성과 순서를 중요시하는 프로토콜이기 때문에 로그인 등 개인정보와 관련된 데이터를 관리하는데 더 유용하다.
- UDP의 경우 속도가 더 빠르기 때문에 실시간 재생 영상을 전송하는데 더 유용하다.
- 객체지향프로그래밍에 대해 설명하세요.
- OOP, 현실세계의 사물을 하나의 객체로 보고 그 사물의 속성과 기능을 프로그래밍으로 구현하는 것.
- 절차지향프로그래밍에 비해서 코드의 재사용성과 유지보수성이 높습니다.
- 절차지향프로그래밍에 대해 설명하세요.
- 프로그램이 순차적으로 실행되는 명령어들의 집합으로 구성됩니다. 모든 프로그램이 유기적으로 연결되어야하며 이는 컴퓨터의 처리구조와 비슷하기 때문에 실행속도가 빠릅니다.
- 채팅사이트를 관리할때 RDBMS와 NOSQL중 어느 것을 사용하는 것이 더 효과적일지 설명하세요.
- 데이터의 일관성, 무결성이 중요한 경우에는 RDBMS, 채팅메시지와 로그는 NOSQL이 유용합니다.
- 인터프리터와 컴파일러의 차이점을 설명하세요.
- 인터프리터는 소스코드를 한줄, 한블럭 단위로 즉시 번역하여 실행합니다. 따라서 소스코드를 수정할 경우 그것이 즉시 반영되어 실행됩니다. 즉시 피드백이 가능하기 때문에 개발과정이 빠른 반면 실행속도가 상대적으로 느립니다.
- 컴파일러는 소스코드 전체를 기계어, 중간언어로 변환하여 실행파일을 생성하고 실행파일을 통해서 프로그램이 동작합니다. 따라서 코드를 수정할 경우 컴파일과정을 다시 거쳐서 실행파일을 새로 생성해야합니다. 실행시 컴파일과정을 거치기 때문에 개발 과정이 번거로운 반면 컴파일과정에서 소스코드가 최적화되어 실행속도가 빠릅니다.
- 빅데이터란 많은 양의 정제되지 않은 데이터인가요? 소수의 정제된 데이터인가요?
- 많은 양의 정제되지 않은 데이터로 V3, 혹은 V5로 정의됩니다.
- Volume: 양, 전통적인 데이터처리시스템으로는 다루기 어려울 정도로 방대한 양의 데이터를 다룹니다.
- Velocity: 속도, 데이터의 생성, 처리속도가 매우 빠르기 떄문에 실시간 데이터처리가 필요합니다.
- Variety: 다양성, 정형데이터 뿐만 아니라 다양한데이터를 다룹니다.
- Veracity: 진실성, 빅데이터의 소스가 매우 다양하기 때문에 데이터의 품질과 신뢰성에 차이가 있습니다.
- Value: 가치, 빅데이터를 분석하고 그것을 통해 특정 인사이트를 도출해야합니다.
면접 질문 예제들(중복되는 부분은 작성하지 않을 예정)
- 배열과 링크드 리스트의 차이점은?
- 배열은 데이터들이 특정 인덱스에 저장되어있기 때문에 특정 요소에 접근할 수 있는 속도가 빠릅니다. 하지만 다른 데이터를 삽입할 때 다른 요소들을 모두 이동시켜야 하기 때문에 속도가 느립니다.
- 링크드 리스트는 특정 요소에 접근하기 위해 노드를 순차적으로 탐색해야하기 때문에 접근시간이 느립니다.
- 하지만 데이터를 삽입할 때는 원하는 위치의 데이터의 포인터만 수정하면 되기때문에 속도가 빠릅니다.
- 따라서 데이터의 삽입/삭제가 빈번하게 일어나는 데이터의 경우 링크드리스트가 적합하고 배열 내부의 데이터를 읽어야 할 일이 많은 경우에는 배열이 적합합니다.
- TCP와 UDP의 차이점은?
- 위에서 작성함
- HTTP와 HTTPS의 차이점?
- 위에서 작성함
- 객체지향 프로그래밍의 4가지 주요 개념은 무엇인가?
- 위에서 작성함
- 상속과 다형성(Polymorphism)의 차이점은?
- 상속은 부모클래스의 속성과 메소드를 자식클래스가 물려받는 것을 의미합니다.
- 다형성은 여러 클래스가 도일한 속성과 기능을 가지면서 각클래스별로 서로 다르게 구현될 수 있음을 의미합니다.
- SQL과 NoSQL의 차이는 무엇인가요?
- 위에서 작성함
- SQL에서 JOIN의 종류와 각각의 차이점은?
- inner join : 두 테이블에서 일치하는 행들을 반환합니다.
- left/right join : 두 테이블의 왼쪽/오른쪽 행을 모두 반환하고 반대쪽 행에서 조건에 일치하는 행들을 반환합니다. 반환할 데이터가 없다면 NULL로 채웁니다.
- full join : 두 테이블의 모든 행을 반환합니다. 조건을 만족할 경우 결합하고 아닐 경우 NULL로 채웁니다.
- cross join : 두 테이블의 모든 조합을 반환합니다. 측 첫번째테이블의 각 행이 두번째 테이블의 각 행들과 모드 결합합니다. 따라서 결합조건이 필요없습니다.
- 서브쿼리와 조인의 차이점은?
- 서브쿼리는 다른 쿼리 내부에 포함된 쿼리로 메인쿼리가 실행되기 전에 먼저 실행되어 그 결과를 메인쿼리에 반영합니다.
- JOIN은 두개이상의 테이블을 결합하여 데이터를 반환하는 방법입니다.
어떻게 통과했는지 모르지만 엉망진창?이었던 cs면접이 종료되었다.
나름대로 정리는 끝났고 내일 면접을 봐주신 튜터님을 찾아가서 왜 통과를 주셨고 오답노트가 잘 작성이 되었는지 여쭤볼 예정이다.
'내일배움캠프' 카테고리의 다른 글
Django 2주차 (0) | 2024.08.18 |
---|---|
WIL - Django주차 시작 (0) | 2024.08.11 |
cs면접 - 후기 (0) | 2024.08.07 |
WIL - SQL 주자 (0) | 2024.08.04 |
cs 총정리! (0) | 2024.08.01 |