본문 바로가기
Knowledge/sparta web develope

[back end] 기술 면접

by w.developer 2023. 8. 17.
  1. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요.
    • 답변 :  관계형 데이터베이스는 규격화된 테이블에 데이터가 저장이 되고, 관계를 정의할 수있어서 안정성이 좋고, DB의 성능과 최적화를 하는 '정규화'가 가능하다는 장점이 있고, 단점은 확장하기에 까다롭고, 복잡하다는 단점이 있습니다. 

      비관계형 데이터베이스는 테이블 형식이 아니어도 되기에 자유성과 확장성, 유연성이 좋은 장점이있고,
      일관성이 부족하다는 단점이 있습니다
  2. mvc 패턴에 대해서 설명해주세요.
    • 답변 : 디자인 패턴 중 하나이고, db를 정의하는 모델과, 보여지는 부분인 view, 사용자 입력을 처리하는 컨트롤러로 나누어져있는 패턴이고,  기능별로 분리해놓았기에 유지보수와 재사용성이 좋습니다.
  3. RDBMS의 정규화에 대해 설명해주세요.
    • 답변 : 데이터의 중복을 최소화하고, 데이터의 무결성 및 일관성을 유지하기 위해 수행. 즉 성능향상을 위해서 실행됩니다.
  4. Primary Key, Foreign Key에 대해 설명해주세요.
    • 답변 :
    • Primary Key (기본 키): 테이블의 각 레코드를 고유하게 식별하는 열. 중복 및 NULL 값을 허용하지 않음.
    • Foreign Key (외래 키): 한 테이블의 열이 다른 테이블의 Primary Key를 참조. 데이터의 관계와 무결성을 보장.
  5. HTTP 메서드에 대해 설명해주세요.
    • 답변:
    • GET: 특정 리소스의 내용을 요청하는 데 사용됩니다. 데이터를 서버로 전송할 때 주로 쿼리 문자열을 URL에 포함시켜 전송합니다.
    • POST: 서버로 데이터를 전송하거나 리소스를 생성할 때 사용됩니다. 데이터는 HTTP 메시지 본문에 포함됩니다.
    • PUT: 특정 리소스를 수정하거나 새로운 리소스를 생성할 때 사용됩니다. POST와 마찬가지로 데이터는 메시지 본문에 포함됩니다.
    • DELETE: 특정 리소스를 삭제하는 데 사용됩니다.
    • PATCH: 리소스의 일부만을 수정하는 데 사용됩니다.
    • HEAD: GET과 유사하지만 리소스의 본문을 반환하지 않고 헤더만을 반환합니다. 리소스의 존재 여부나 메타 정보를 확인하는 데 사용할 수 있습니다.
    • OPTIONS: 특정 URL에 대해 사용 가능한 HTTP 메서드를 조회하는 데 사용됩니다. 이는 CORS(Cross-Origin Resource Sharing)에서 특히 중요하게 사용됩니다.
    • CONNECT: 네트워크 터널을 설정하기 위해 사용되며, 보통 HTTPS 프록시 연결 시에 사용됩니다.
    • TRACE: 요청된 리소스에 대한 진단을 받기 위해 사용됩니다. 요청된 리소스가 서버에 어떻게 도착하는지를 추적하는 데 사용될 수 있습니다.
  6. CORS(Cross Origin Resource Sharing)에 대해 설명해주세요.
    • 답변:
    • CORS는 Cross-Origin Resource Sharing의 약자로, 웹 페이지에서 다른 도메인의 리소스에 접근할 때 발생하는 보안 문제를 해결하기 위한 메커니즘입니다.
  7. 브라우저의 작동방식에 대해서 설명해주세요.
    • 답변:
    • 브라우저는 웹페이지를 불러오는 과정에서 여러 단계를 거칩니다. 먼저 사용자가 웹 주소를 입력하면, 이 주소가 어떤 서버에 해당하는지 알아내기 위해 DNS 시스템을 통해 IP 주소를 찾아냅니다. 이 IP 주소로 해당 서버에 페이지 정보를 요청하게 되는데, 이때 HTTP 프로토콜이 사용됩니다. 서버는 요청에 응답하여 해당 페이지의 내용을 보내주고, 브라우저는 이 내용을 분석하여 사용자에게 보기 좋게 화면에 그립니다. 그리고 페이지에 동적인 요소나 상호작용이 필요하다면 JavaScript가 실행되어 페이지가 완성됩니다. 이렇게 여러 단계를 거쳐 우리가 보는 웹페이지가 화면에 표시되는 것입니다.
  8. 쿠키, 세션의 개념과 차이를 설명해보세요
    • 답변:
    • 쿠키는 클라이언트에 저장되는 작은 텍스트 파일이며, 세션은 서버에 저장되는 사용자 정보입니다. 주된 차이점은 저장 위치와 지속성으로, 쿠키는 유효 기간이 있지만 세션은 활동 시간이나 로그아웃에 의해 종료됩니다.
  9. TCP/UDP에 대해서 설명해주세요.
    • 답변
    • TCP는 연결 지향적 프로토콜로, 데이터 전송의 신뢰성과 순서를 보장합니다. 반면, UDP는 연결 없이 데이터를 전송하므로 빠르지만 신뢰성과 순서를 보장하지 않습니다. TCP는 웹 브라우징이나 이메일 전송 등에 사용되며, UDP는 스트리밍이나 온라인 게임에 적합합니다.
  10. http, https 차이점에 대해 설명해주세요
    • 답변
    • HTTP와 HTTPS의 주요 차이점은 보안입니다. HTTP는 평문으로 데이터를 전송하지만, HTTPS는 SSL/TLS 프로토콜을 사용해 데이터를 암호화합니다. 따라서 HTTPS는 중간자 공격에 대한 보호를 제공하며, 웹사이트와 사용자 간의 정보를 보호합니다.
  11. DI, IoC에 대해 설명해주세요.
    • 답변
    • DI(Dependency Injection)는 객체 간의 의존 관계를 외부에서 주입해주는 패턴입니다. IoC(Inversion of Control)는 프로그램의 제어 흐름을 개발자가 아닌 프레임워크나 라이브러리가 가지게 하는 개념입니다. DI는 IoC의 한 형태로, 의존성 관리를 프레임워크에 위임함으로써 객체간의 결합도를 낮춥니다. 이를 통해 유연성, 재사용성, 테스트 용이성이 향상됩니다. 대표적인 예로 Spring 프레임워크에서 주로 사용됩니다.
  12. 객체지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요?
    • 답변
    • 객체지향 프로그래밍은 현실 세계의 객체들과 그 관계를 모델링하여 소프트웨어를 설계하고 구현하는 프로그래밍 패러다임입니다. 객체는 상태와 행동을 가진다. 이를 통해 코드의 재사용성, 확장성, 유지보수성이 향상됩니다. 실제 세계 문제를 코드로 표현할 때 더 직관적이며, 복잡한 시스템도 모듈화하여 관리할 수 있습니다
  13. 대용량 트래픽 발생 시 어떻게 대응해야 하나요?
    • 답변
    • 대용량 트래픽 발생 시, 스케일링을 통해 대응할 수 있습니다. 수평 스케일링(다수의 서버에 트래픽 분산)과 수직 스케일링(하드웨어 업그레이드)을 적절히 활용하면 트래픽을 효과적으로 관리할 수 있습니다.
  14. ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?
    • 답변
    • ORM을 사용하면서 쿼리가 복잡해지는 경우, 최적화된 SQL 쿼리를 직접 작성하거나, ORM의 advanced features를 활용하여 복잡한 쿼리를 처리할 수 있습니다.
  15. GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요.
    • 답변
    • GET과 POST는 HTTP 프로토콜의 메서드 중 하나로, GET은 서버에서 데이터를 조회할 때 사용하고, POST는 서버에 데이터를 전송할 때 사용합니다. 데이터 흐름은 클라이언트에서 서버로 요청을 보내고, 서버에서 클라이언트로 응답을 반환하는 과정으로 이루어집니다.
  16. OSI 7계층에 대해 아는대로 설명해주세요.
    • 답변
    • OSI 7계층은 네트워크의 통신 과정을 7개의 계층으로 구분한 것으로, 각 계층은 특정한 기능을 수행합니다. 하위에서 상위로, 1) 물리계층, 2) 데이터 링크 계층, 3) 네트워크 계층, 4) 전송 계층, 5) 세션 계층, 6) 표현 계층, 7) 응용 계층으로 구성되어 있습니다.
  17. 세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.
    • 답변
    • 세션 기반 인증: 서버가 세션을 유지하고, 클라이언트는 세션 ID를 쿠키 등을 통해 저장해 인증. 서버에 상태 유지 필요.
      토큰 기반 인증: 클라이언트가 토큰을 발급받아 저장하며, 서버는 토큰을 검증. 서버에 상태 비저장, 확장성 용이.
  18. JWT, Refresh, Access Token에 대해서 설명해주세요.
    • 답변
    • JWT (JSON Web Token): 속성 정보 포함한 토큰, 클라이언트와 서버 간 인증 및 권한 부여에 사용.
      Refresh Token: Access Token 갱신에 사용되며, 더 오래 유지되는 토큰.
      Access Token: 짧은 수명, API 호출 등의 권한 부여에 사용.
  19. OAuth에 대해서 설명해주세요.
    • 답변
    • OAuth는 인증 및 권한 위임 프레임워크로, 다른 애플리케이션에 사용자 데이터 접근 권한을 부여할 수 있게 함.
  20. 클래스형과 함수형의 차이를 설명해주세요. 어떤 방식을 주로 사용하였고 그 이유가 뭔지 답변해주세요.
    • 답변
    • 클래스형은 객체 지향 프로그래밍에 기반한 방식, 상태 저장 및 메서드 활용에 용이.
      함수형은 상태 변화 없이 함수 조합을 통한 프로그래밍, 간결하고 병렬처리에 적합. 최근에는 함수형 패러다임이 주로 사용됨.
  21. CI/CD에 대해서 설명해주세요.
    • 답변
    • CI(Continuous Integration): 코드 변경 시 자동 빌드 및 테스트 수행.
      CD(Continuous Deployment/Delivery): CI를 통해 테스트 통과한 코드를 자동으로 배포 또는 스테이징 환경에 제공.
  22. TDD에 대해서 설명해주세요.
    • 답변
    • 테스트 코드를 먼저 작성하고, 그 후 해당 테스트를 통과시키기 위한 코드를 작성하는 개발 방법.
  23. 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요.
    • 답변
    • 프로세스: 독립된 메모리 공간을 가지며, 각각 독립된 실행 흐름을 갖는 프로그램 인스턴스.
      쓰레드: 하나의 프로세스 내에서 실행되는 작은 실행 단위로, 공유된 메모리 공간 사용.
  24. 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.
    • 답변
    • 멀티프로세스: 독립된 메모리 공간, 안전성 우수, 오버헤드 크고 복잡.
      멀티쓰레드: 공유 메모리, 빠른 통신, 복잡성 낮음, 안정성에 주의 필요.
  25. 쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요.
    • 답변
    • 데이터베이스 쿼리를 효율적으로 실행하기 위해 인덱스, 쿼리 재작성, 하드웨어 튜닝 등을 활용하는 과정.
  26. DB 로직 최소화를 하려면 어떻게 해야 할까요?
    • 답변
    • 중복 데이터, 복잡한 조인 등을 피하고, 필요한 데이터만 요청하여 데이터베이스 부하를 최소화.
  27. 테스트코드에 대해서 아는대로 설명해주시고 활용 경험에 대해서 답변해주세요.
    • 답변
    • 소프트웨어 기능 확인을 위한 코드로, 단위 테스트, 통합 테스트 등으로 애플리케이션 품질 향상. 개발 주기 초기부터 작성되며 버그 식별과 유지보수 용이.
  28. Array, LinkedList에 대해 설명해주시고 각각 어떻게 사용하는지 말씀해주세요.
    • 답변
    • Array: 고정 크기, 빠른 접근, 크기 변경 어려움.
      LinkedList: 동적 크기, 데이터 삽입/삭제 용이, 접근이 느림.
  29. AWS S3, EC2를 사용하는 이유와 사용 경험에 대해서 답변해주세요.
    • 답변
    • S3: 객체 스토리지로 파일 저장 및 관리용.
      EC2: 가상 서버로 애플리케이션 호스팅 및 스케일링에 사용. 효율적인 자원 관리와 확장성 제공.
  30. 정렬 알고리즘에 대해서 아는대로 설명해주세요.
    • 답변
    • 정렬 알고리즘은 데이터를 일정한 순서로 재배열하는 방법으로, 예를 들어 버블 정렬, 퀵 정렬, 병합 정렬 등이 있음. 이 알고리즘들은 데이터 정리와 검색을 용이하게 함.