ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS 기술 면접 핵심 요약 오답노트
    Computer Science 2024. 8. 10. 23:59

    그저께 쓴 TIL이 자체적으로 제출하는 오답노트인 줄 알았는데 아니었구나ㅎㅎ

     

    기술 면접 질문들에 대해 조금 더 공부해서 정리한 그리고 민준튜터님의 피드백을 반영해 답변을 작성했다.

    다음엔 민준튜터님 말씀대로 좀 더 자신감있게 씩씩하게 대답해야지.

     

     

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

        
    배열은 미리 크기를 정해놓는 정적 자료구조로서 연속된 메모리 주소를 할당받습니다. 인덱스가 존재하기 때문에 접근과 탐색이 용이합니다. 연결리스트는 크기를 정할 필요가 없는 동적 자료구조로서 연속된 메모리 주소를 할당받지 않습니다. 노드가 존재하며 추가나 삭제가 용이합니다. 

     


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


    UDP는 비연결형 데이터그램 방식의 프로토콜로 신뢰성을 보장하지 않습니다. 하지만 TCP에 비해 구조가 단순하고 빠릅니다. 
    TCP는 연결형 가상회선 방식의 프로토콜로 신뢰성을 보장합니다. 하지만 UDP에 비해 구조가 복잡하고 느립니다.

     


    [3] HTTP와 HTTPS의 차이점?
    HTTP는 서버와 클라이언트가 웹상에서 정보를 주고받을 수 있도록 해주는 프로토콜입니다. 그런데 암호화를 하지 않는 프로토콜이다보니 보안성이 취약한 문제가 있었습니다. 해당문제를 극복하기 위해 암호화를 하는 HTTP프로토콜을 HTTPS라고 합니다. 100% 보안성이 확보된 것은 아니지만 그래도 기존의 HTTP보다보안성이 우수합니다.

     


    [4] 객체지향 프로그래밍의 4가지 주요 개념

    객체지향이란 추상화하고자 하는 객체의 모습을 가상의 공간에 구체화하며 설계해 나가는 것을 의미합니다.

    첫번째
    객체지향 프로그램 하면 반드시 따라오는 첫번째 개념이 바로 class(클래스)입니다. 클래스는 객체를 생성하기 위해 어떤 속성과 방법의 집합을 추상화하여 표현한 것을 의미합니다. 클래스 안에는 함수와 변수가 있고, 클래스 안에 클래스를 만들 수도 있습니다. 클래스 안에 있는 맴버함수와 변수에 접근하기 위해서는 반드시 객체를 이용해야 합니다.

    두번째 개념이 바로은 객체(Instance, 인스턴스)입니다.. 객채란 현실세계에 있는 어떤 대상을 추상화 한 것인데요, 동물이 될 수도 있고, 학생이나 선생님도 객체로 표현할 수 있고, 학교나 은행과 같은 기관, 또는 감정이나 생각들도 객체로 표현할 수 있습니다. 클래스의 객체는 클래스 기반으로 생성된 실체. 즉, 클래스의 인스턴스입니다. 클래스에서 정의한 속성과 메소드를 갖고 있으며, 실제 프로그램에서 데이터와 행동을 표현하는 데 사용됩니다.
     
    세번째
    상속(Inheritance)은 기존 클래스(부모 클래스)의 속성과 메소드를 새로운 클래스(자식 클래스)에서 재사용할 수 있게 해주는 메커니즘입니다. 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다. 예를 들어 '고양이'라는 자식 클래스가 ‘동물’이라는 부모클래스 안에 있는 ‘걷기’함수, ‘숨쉬기’함수를 상속받으면 동물의기본적인 기능을 다시 구현하지 않아도 되고, 그루밍 같은 고양의 특징들만 추가로 구현하면 됩니다.

    네번째 
    다형성(Polymorphism)은 동일한 메소드 이름이지만, 서로 다른 클래스에서 다르게 동작하도록 하는 걸 의미하는데요. 오버라이딩과 오버로딩이 있습니다. 오버라이딩은 상속받은 클래스에서 어떤 기능을 재정의하는것을 의미합니다. 예를 들어, 부모클래스에서 ‘get()’이라는 함수가 있을 때  자식 클래스에서 동일한 이름으로 ‘get()’이라는 함수를 만들고 그 기능을 다시 정의하면 다시 정의한 함수로 기능하게 됩니다. 그리고 일반적으로 오버로딩이라고 하면 함수의 이름은 같으나 매개변수를 다르게 설정하여 사용 목적에 따라 다르게 불러오는 것을 의미합니다.
     
    지금 말씀드린 이 네 가지 개념이 객체지향 프로그래밍의 대표적인 특징으로, 소프트웨어 개발 시 코드의 조직화와 유지보수를 용이하게 해줍니다.

     


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


    상속은 한 클래스가 다른 클래스의 속성과 메소드를 물려받는 것을 의미하며, 다형성은 하나의 인터페이스나 부모 클래스를 통해 다양한 구현을 할 수 있게 하는 개념입니다. 상속을 통해 기존의 코드를 재사용하고 확장할 수 있고, 다형성을 통해 코드의 유연성을 높일 수 있습니다.

     


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

    첫번째는 데이터 구조입니다.
    SQL 데이터베이스는 관계형 데이터베이스 시스템(RDBMS)을 사용하며, 정해진 규칙에 따라 데이터를 표 형식으로 저장합니다. 예를 들어, 학교에서 학생 명부를 표로 작성하는 것과 같습니다.
    NoSQL 데이터베이스는 비관계형 데이터베이스 (Non-Relational Database)를 사용하며, 자유롭게 데이터를 저장할 수 있습니다. 예를 들어, 일기장에 자유롭게 글을 쓰는 것과 같습니다.

    두번쨰는 확장성입니다.
    SQL은 더 강력한 컴퓨터로 바꿔서 성능을 높입니다. 예를 들어, 작은 컴퓨터를 큰 컴퓨터로 바꾸는 것과 같습니다. 대부분의 SQL 데이터베이스는 수직 확장에 의존합니다.
    NoSQL은 여러 대의 컴퓨터를 추가해서 성능을 높입니다. 예를 들어, 여러 대의 컴퓨터를 같이 사용하는 것과 같습니다. NoSQL 데이터베이스는 설계상 수평 확장에 최적화되어 있습니다.


    세번째 트랜잭션입니다.
    SQL은 모든 작업이 완벽하게 끝나야 저장됩니다. 예를 들어, 은행에서 송금할 때 모든 절차가 완료되어야 돈이 이동하는 것과 같습니다.
    NoSQL은 일부는 작업 중에 데이터가 조금씩 저장될 수도 있습니다. 예를 들어, 웹사이트에 댓글을 달 때, 댓글이 점차 저장되는 것과 비슷합니다.

     


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

     

     

    1. INNER JOIN
    두 테이블에서 조건에 맞는 행만 결과로 반환합니다. 두 테이블 간에 공통된 값이 있는 행만 포함합니다.

    2. LEFT JOIN 
    왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 반환합니다. 오른쪽 테이블에 일치하는 행이 없으면 NULL로 표시됩니다.

    3. RIGHT JOIN 
    오른쪽 테이블의 모든 행과 왼쪽 테이블에서 일치하는 행을 반환합니다. 왼쪽 테이블에 일치하는 행이 없으면 NULL로 표시됩니다.

    4. FULL JOIN 
    두 테이블의 모든 행을 반환하며, 일치하는 경우에는 결합된 데이터가, 일치하지 않는 경우에는 NULL로 표시됩니다.

    5. CROSS JOIN
    두 테이블의 모든 가능한 조합을 반환합니다. 

    6. SELF JOIN
    동일한 테이블을 두 번 참조하여 조인합니다. 테이블 간의 관계를 탐색할 때 유용합니다.

     

     

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

     

    서브쿼리는 다른 쿼리의 내부에 포함된 쿼리이며 특정 값을 찾거나 특정 조건을 만족하는 데이터를 필터링하기 위해 사용됩니다. 반면 조인은 두 개 이상의 테이블을 결합하여 하나의 결과를 생성하여 여러 테이블에서 관련 데이터를 결합하여 전체적인 정보를 통합하기 위해 사용됩니다.

     

     


     

Designed by Tistory.