CS 기술면접 모음(2)

RedNine·2023년 12월 15일
0

cs공부

목록 보기
7/10

✨ ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?

ORM에서 제공하는 Query Builder를 사용하거나 캐싱 및 지연 로딩 등의 기능을 사용하여 복잡한 쿼리의 부하를 줄일 수 있습니다.

ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?

  • Query Builder : 데이터베이스의 쿼리를 직접입력하는 것보다 간단한 방법으로 데이터베이스 안에 있는 내용을 조작할 수 있다.
    Laravel Framework - ORM / Query Builder

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

OSI 모델은 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 분리하여 설명하는 방법입니다. 이 모델은 일반적으로 7개의 계층으로 구성됩니다. 각 계층은 네트워크 통신에서 특정한 기능을 수행하며, 데이터의 전송을 관리하고 제어합니다.

✨ 세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.

두 방식의 차이는 인증 확인 증거를 어디에 저장할 것인지에 있습니다. 세션 기반 인증은 DB 서버에, 토큰 기반 인증은 클라이언트 측에 저장합니다.
세션 인증 방식 vs 토큰 인증 방식

  • 세션 기반 인증과 토큰 기반 인증의 가장 큰 차이는 '상태 유지'와 '상태 없음'에 있습니다. 세션 기반 인증은 서버가 사용자를 기억하고, 토큰 기반 인증은 사용자가 자신을 증명합니다.

✨ JWT, Refresh, Access Token에 대해서 설명해주세요.

JWT는 인증에 필요한 정보들을 토큰에 담아 암호화시켜 사용하는 토큰입니다. Access 토큰은 요청의 유효성을 확인하고, Refresh 토큰은 Access 토큰이 만료되었을 때 새로 발급받는 데 사용됩니다.

✨ OAuth에 대해서 설명해주세요.

OAuth는 별도의 회원가입 없이 로그인을 제공하는 플랫폼의 계정만 있으면 외부 서비스에서도 인증을 가능하게 하고 그서비스의 API를 이용하게 해줍니다.

✨ CI/CD에 대해서 설명해주세요.

CI(Continuous Integration)는 지속적 통합을 의미하고, CD(Continuous Deployment)는 지속적 배포를 의미합니다. CI와 CD는 소프트웨어 개발의 전반적인 과정을 자동화하여 빠른 소프트웨어 제공을 가능하게 합니다.

소프트웨어 변경 사항이 발생하면 자동으로 빌드, 테스트, 패키징, 배포 등의 작업이 이루어지므로, 개발자가 수동으로 배포 과정을 수행하는 것보다 더욱 효율적이고 안정적으로 배포를 수행할 수 있습니다.

CI/CD의 개념정리

✨ TDD에 대해서 설명해주세요.

TDD는 테스트 주도 개발이라는 의미로, 선 테스트 후 개발하는 방식의 프로그래밍 방법입니다. RED, BLUE, GREEN 의 과정을 순환하며 특정 기능을 수행하는 코드를 리팩토링 합니다.

  • RED 단계 : 실패하는 테스트 코드 작성
  • GREEN 단계 : 성공하는 테스트 코드 작성
  • BLUE 단계 : 중복 코드 제거, 일반화 등의 리팩토링을 수행
  • 디자인 → 테스트 → 코드작성

TDD란? 테스트 주도 개발

✨ 애자일 방법론이란?

협력과 피드백을 자주 많이 하는 것을 의미합니다.

✨ 멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.

멀티프로세스는 하나의 프로그램에서 여러 개의 프로세스를 실행하는 것을 의미합니다.

멀티쓰레드는 하나의 프로세스 안에 여러개의 스레드가 있는 것을 의미합니다.

  • 멀티프로세스(Multi Process)
  1. 프로그램 안전성 : 프로그램 전체의 안전성을 확보할 수 있다.
  2. 프로그램 병렬성 : 여러 개의 코어나 CPU에 분산시켜 빠르게 처리할 수 있다.
  3. 시스템 확장성 : 새로운 기능이나 모듈을 추가하거나 수정할 때 다른 프로세스에 영향을 주지 않는다.
  • 멀티쓰레드(Multi Thread)
  1. 스레드는 프로세스 보다 용량이 가볍다.
  2. 자원의 효율성 : 공유 메모리에 대해 스레드 간에 자원을 공유가 가능하다.
  3. 상대적으로 프로세스 컨텍스트 스위칭(Context Switching) 오버헤드보다 훨씬 낮아 비용이 낮다는 장점이 있다.

👩‍💻 멀티 프로세스 vs 멀티 스레드 비교 💯 완전 총정리

✨ 쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요.

쿼리 최적화는 데이터베이스에서 쿼리의 처리 속도를 향상시키는 프로세스입니다.
적절한 인덱스를 활용하여 데이터 접근을 최적화하거나, 서브쿼리 대신 조인(Join)을 사용하고 조인 순서를 조정하여 성능을 향상시킬 수 있습니다.

[SQL]간단하면서 쉬운 쿼리 최적화 방법

✨ DB 로직 최소화를 하려면 어떻게 해야 할까요?

데이터베이스와 관련된 작업을 최적화하고 효율적으로 처리하는 방법을 적용해야 합니다. 인덱스와 제약조건을 적절하게 활용하거나, 중복된 데이터를 피하고 정규화를 적용하여 데이터 중복을 최소화 해야합니다.

DB 로직 최소화

✨ 테스트코드에 대해서 아는대로 설명해주세요.

테스트 코드는 소프트웨어의 기능과 동작을 테스트하는 데 사용되는 코드입니다. 메서드가 의도한 대로 작동하는지 확인하는 단위 테스트와 서로 다른 모듈들 간의 상호작용을 테스트하는 통합 테스트 등이 있습니다.

  • 코드테스트 장점
  1. 코드 품질 향상
  2. 회귀 테스트
  3. 문서화
  4. 리팩토링 지원

테스트 코드는 왜 만들까?

✨ AWS S3, EC2를 사용하는 이유에 대해서 설명해주세요.

AWS의 S3, EC2를 사용하면 서버 관리에 드는 시간과 노력을 크게 줄일 수 있고, 비즈니스 성장에 따라 쉽게 확장할 수도 있습니다. 사용한 만큼만 비용을 지불하는 구조이며, AWS의 다양한 보안 기능을 활용하여 데이터 보호를 강화할 수도 있습니다.

✨ 정렬 알고리즘에 대해서 아는대로 설명해주세요.

정렬 알고리즘은 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것입니다. 얼마나 효과적으로 해결하는 지가 정렬 알고리즘의 핵심입니다.
대표적으로 버블정렬, 선택정렬, 삽입정렬, 병합정렬, 퀵정렬이 있습니다.

Q. 정렬 알고리즘에 대해 설명해주세요.

0개의 댓글