본문 바로가기

[내일배움캠프]스파르타코딩클럽 AI 웹개발/Today I Learned

[TIL] 오답노트

면접 질문

 

[1] 배열과 링크드 리스트의 차이점은?

배열은 크기가 고정되어있으며 메모리상에 연속적인 공간을 사용한다. 각각의 값을 요소라고 하고 각 요소들은 인덱스를 통해 접근이 가능하다. 데이터를 조회하는데 O(1)의 시간복잡도를 가지기때문에 조회에 유리하며 삽입과 삭제시에는 O(n)의 시간복잡도를 갖는다.

링크드리스트는 각 요소가 데이터와 다음 요소를 가리키는 포인터로 구성되어 있다. 따라서 데이터를 동적으로 추가, 삭제를 조금더 쉽게 할 수 있다는 장점이 있지만 조회하는데는 어려움이 있다는 단점이 있다.

 

 

[2] TCP와 UDP의 차이점은?

TCP는 연결지향적인 방식으로 높은 신뢰성을 보장하지만  속도가 느리다는 단점이 있다.

UDP는 비연결형 방식으로 신뢰성이 낮지만 속도가 빠르다는 단점이 있다. 따라서 UDP는 신뢰성이 중요시되기보다는 실시간 처리와 같이 속도가 중요한 곳에 이용된다. 

 

 

[3] HTTP와 HTTPS의 차이점?

HTTP는 암호화되지 않은 데이터를 전송한다. 따라서 브라우저에서 전송된 정보를 제3자가 가로채고 읽을 수 있다. HTTPS는 이러한 문제를 극복하고자 http에 보안을 추가한것이라고 할 수 있다. 

HTTPS는 서버에 인증서를 요청하여 사이트의 신뢰성을 검사하며 두 개의 서로 다른 키를 사용하여 두 당사자 간의 통신을 암호화한다. 

 

 

[4] 객체지향 프로그래밍의 4가지 주요 개념은 무엇인가?

추상화, 캡슐화, 상속, 다형성이 있다.

추상화는 객체들이 공통적으로 필요로 하는 속성이나 기능을 하나로 만드는 것을 말한다. 

캡슐화는 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것이다. 

상속은 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 하위클래스는 상위 클래스의 변수와 기능을 물려받아서, 재사용할 수 있다. 따라서 코드의 중복을 제거할 수 있다.

다형성은 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 것을 말한다. 매서드 오버라이딩과 매서드 오버로딩이 다형성에 해당한다.

 

[5] 상속과 다형성(Polymorphism)의 차이점은?

상속과 다형성은 모두 코드의 재사용성과 유지보수성을 높이는데 사용된다. 상속은 부모 클래스로부터 속성과 메소드를 상속받아 자식클래스에서 재사용하는 개념이다. 다형성은 한 가지 인터페이스나 메서드가 여러 형태로 구현되는 것을 말한다. 부모 클래스의 매서드가 하위 클래스에서 다르게 정의될 수 있도록 하는 오버라이딩 또한 다형성이라고 할 수 있다.

 

 

[6] SQL과 NoSQL의 차이는 무엇인가요?

SQL은 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다. SQL을 사용하면 RDBMS를 이용하여 데이터를 저장, 조회, 삭제, 수정할 수 있다. NoSQL은 Not only SQL의 약자로 비관계형 데이터베이스를 말한다. 따라서 데이터가 변경될 여지가 없고 명확한 스키마가 사용자와 데이터에 중요한 경우에는 SQL 데이터베이스를 사용하는 것이 유리하고 정확한 데이터 구조를 확정할 수 없거나, 데이터 구조가 변경, 확장될 가능성이 있는 경우에는 NoSQL을 사용하는 것이 더 유리하다고 말할 수 있다.

 

 

 

 

 

시간 없어서 그냥 넘어간 질문

 

 

[7] SQL에서 JOIN의 종류와 각각의 차이점은?

inner join : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 컬럼의 데이터가 있어야 한다

outer join : 두 테이블을 조인할 때 1개의 테이블에만 데이터가 있어도 결과가 나온다

cross join : 한 쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다

self join : 동일한 테이블 사이의 조인

 

 

[8] 서브쿼리와 조인의 차이점은?

 

조인과 서브쿼리 모두 여러 테이블에서 데이터를 조회하는데 사용할 수 있는 SQL 문법이다

서브쿼리는 복잡한  SQL 쿼리문에 많이 사용되며 서브쿼리는 쿼리 내에서 다른 쿼리를 실핼하는데 사용된다. 서브쿼리는 가독성이 좋지만 성능이 조인에 비해 좋지 않다는 단점이 있다.

조인은 여러 개의 쿼리를 필요로 하지 않고, 2개 이상의 테이블을 연결하고 연결한 테이블로부터 필요한 컬럼을 조회할 수 있다.

 

 

 

 

 

 

 

기억나는 추가질문

 

[ - ]캡슐화와 정보은닉의 차이점

캡슐화는 정보 은닉의 개념 중 하나라고 볼 수 있으며 정보은닉은 캡슐 내의 요소들에 대한 세부사항을 외부에 숨기는 장치이다.

 

 

[ - ]추상클래스와 인터페이스의 차이점

추상 클래스는 추상 메소드를 0개 이상 가지고 있다는 것을 제외하고는 일반 클래스와 전혀 다르지 않다. 추상 메소드는 선언부는 있는데 구현부가 없는 메소드를 말한다.

인터페이스는 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 한다. 따라서 구현 객체가 동일한 기능을 한다는 것을 보장하기 위한 것이다.

 

 


 

아는거 같은데 확신은 없는 질문이 들어왔을 때 대답하는게 너무 어려웠다... 모르는건 그냥 모르는건데 애매하게 아는 것들이 있어서 이 부분이 대답하기 힘들었던 것 같다. 그리고 내가 이해하고 있는 내용을 말로 풀어서 설명하려니 그것도 어려웠다... 어제는 진짜 순한맛을 넘어 달달한맛으로 튜터님이 면접봐주셨는데도 호달달 떨었는데 앞으로 볼 면접이 너무 두렵다...