Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

[과제 1] 개발자 기술 면접, IT 기술 면접 정리 본문

1 - 겨울방학/iOS 앱 개발자 워크숍

[과제 1] 개발자 기술 면접, IT 기술 면접 정리

김브래 2023. 1. 19. 20:34

오버라이딩(Overriding)과 오버로딩(Overloading)에 대해 설명해주세요.

오버라이딩(Overriding)은 상위 클래스에 있는 메소드를 하위 클래스에서 재정의 하는 것을 말하고,

오버로딩(Overloading)은 매개변수의 개수나 타입을 다르게 하여 같은 이름의 메소드를 여러 개 정의하는 것을 말합니다.

객체지향 프로그래밍(OOP)에 대해 설명해주세요.

모든 데이터를 객체취급하며, 처리요청을 받은 객체는 객체 그 안의 기능을 사용해 요청을 처리합니다.

특징으로는 캡슐화, 상속, 다형성, 추상화 등이 있고, 모듈 재사용으로 확장 및 유지보수가 용이합니다.

클래스와 객체에 대해 설명해주세요.

클래스는 객체를 만들어내기 위한 설계도 혹은 틀 이라고 할 수 있고, 객체를 생성하는데 사용합니다.

객체는 클래스를 기반으로 생성되며, 자신의 고유 이름과 상태, 행동을 갖습니다.

여기서 상태는 프로퍼티, 행동은 메소드 라고 표현합니다.

객체에 메모리가 할당되어 실제로 활용되는 실체는 '인스턴스'라고 부릅니다.

생성자 에 대해 설명해주세요.

생성자는 클래스와 같은 이름의 메소드로, 객체가 생성될 때 자동 호출되는 메소드입니다.

명시적으로 생성자를 만들지 않아도 default로 만들어지며, 생성자는 파라미터를 다르게하여 오버로딩할 수 있습니다.

접근 제한자(Access Modifier)에 대해 설명해주세요.

변수 또는 메소드의 접근 범위를 설정해주기 위해서 사용하는 예약어를 의미

(접근 제한자는 언어마다 조금씩 다름)

static에 대해 설명해주세요.

static 키워드를 사용한 변수나 메소드는 클래스가 메모리에 올라갈 때 자동으로 생성되며 클래스 로딩이 끝나면 바로 사용할 수 있습니다. 즉, 인스턴스(객체) 생성 없이 바로 사용 가능합니다.

 

모든 객체가 메모리를 공유한다는 특징이 있고, 프로그램이 종료될 때까지 메모리에 값이 유지된 채로 존재합니다

static을 사용하는 이유에 대해 설명해주세요.

static은 자주 변하지 않는 값이나 공통으로 사용되는 값 같은 공용자원에 대한 접근에 있어서 매번 메모리에 로딩하거나 값을 읽어들이는 것보다 일종의 '전역변수'와 같은 개념을 통해 접근하는 것이 비용도 줄이고 효율을 높일 수 있습니다.

 

인스턴스 생성 없이 바로 사용 가능하기 때문에 프로그램 내에서 공통으로 사용되는 데이터들을 관리할 때 이용합니다.

 Stack과 Queue, Tree와 Heap의 구조에 대해 설명해주세요.

Stack은 후입선출(LIFO)방식 즉, 나중에 들어간 원소가 먼저 나오는 구조이고

Queue는 선입선출(FIFO)방식 즉, 먼저 들어간 원소가 먼저 나오는 구조를 갖습니다.

 

Tree는 스택과 큐와 같은 선형 구조가 아닌 비선형 자료구조이며, 계층적 관계를 표현하기에 적합합니다.

Heap은 최댓값 또는 최솟값을 찾아내는 연산을 쉽게 하기 위해 고안된 구조로,

각 노드의 키값이 자식의 키값보다 작지 않거나(최대힙) 그 자식의 키값보다 크지 않은(최소힙) 완전이진트리 입니다.

HTTP 프로토콜에 대해 설명해주세요.

HTTP(Hyper Text Transfer Protocol)이란 데이터를 주고 받기 위한 프로토콜이며, 서버/클라이언트 모델을 따릅니다.

HTTP와 HTTPS의 차이점은 무엇인가요?

HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 중요한 정보를 주고 받으면 제 3자에 의해 조회될 수 있습니다.

이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다.

쿠키는 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일입니다. HTTP에서 클라이언트의 상태 정보를 PC에 저장했다가 필요시 정보를 참조하거나 재사용할 수 있습니다.

세션은 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술입니다.

TCP와 UDP의 차이를 설명해주세요.

TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있습니다.

UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있지만, 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다는 장점이 있습니다.

3 way-handshake와 4 way-handshake를 설명해주세요.

3 way-handshake란 TCP 네트워크에서 통신 하는 장치가 서로 연결이 잘 되었는지 확인하는 방법입니다. 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태인지 확인합니다.

4 way-handshake란 TCP 네트워크에서 통신 하는 장치의 연결을 해제하는 방법입니다. 송신자와 수신자는 총 4번에 걸쳐 데이터를 주고 받으며 연결을 끊습니다.

OSI 7 layer와 각 계층에 대해 아는대로 설명해주세요.

7 계층(응용 계층) : 사용자에게 통신을 위한 서비스 제공. 인터페이스 역할

6 계층(표현 계층) : 데이터의 형식(Format)을 정의하는 계층 (코드 간의 번역을 담당)

5 계층(세션 계층) : 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층

4 계층(전송 계층) : 최종 수신 프로세스로 데이터의 전송을 담당하는 계층 (단위 :Segment) (ex. TCP, UDP)

3 계층(네트워크 계층) : 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층 (단위 :Packet) (ex. Router)

2 계층(데이터링크 계층) : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층 (단위 :frame) (ex. 이더넷)

1 계층(물리 계층) : 데이터를 전기 신호로 바꾸어주는 계층 (단위 :bit) (장비: 케이블,리피터,허브)

동기와 비동기의 차이에 대해 설명해주세요.

동기는 순차적, 직렬적으로 테스크를 수행하고, 비동기는 병렬적으로 테스크를 수행합니다.

Call By Value와 Call By Reference의 차이에 대해 설명해주세요.

Call By Value(값에 의한 호출) - 인자로 받은 값을 복사하여 처리하는 방식입니다. 

Call By Reference(참조에 의한 호출) - 인자로 받은 값의 주소를 참조하여 직접 저장해 값에 영향을 주는 방식입니다. 

절차지향 프로그래밍과 객체지향 프로그래밍의 차이점에 대해 설명해주세요.

절차지향 프로그래밍

물이 위에서 아래로 흐르는 것처럼 순차적인 처리를 중요시하는 프로그래밍 기법이다.

대표적인 언어로 C언어가 있다.

컴퓨터의 처리구조와 유사해 실행속도가 빠르다.

코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다.

 

객체지향 프로그래밍

실제 세계의 사물들을 객체로 모델링하여 개발을 진행하는 프로그래밍 기법이다.

대표적인 언어로 Java가 있다.

캡슐화, 상속, 다형성 등과 같은 기법을 이용할 수 있다.

절차지향 언어보다 실행속도가 느리다.

프레임워크와 라이브러리의 차이에 대해 설명해주세요.

이 둘의 차이점은 제어 흐름에 대한 주도권이 누구에게/어디에 있는가에 있습니다.

 

프레임워크는 전체적인 흐름을 쥐고 있고, 개발자는 그 안에서 라이브러리에 대한 흐름을 쥐고 있습니다.

여기서 개발자의 제어권을 프레임워크에게 넘김으로써 신경써야할 것을 줄일 수 있는데,

이를 제어의 역전(Inversion of Control)이라 합니다.

 

출처: https://dev-coco.tistory.com/category/%F0%9F%93%8CETC/Tech%20Interview