Giter Site home page Giter Site logo

backend-interview-question's Introduction

I ❤️ Code Review and 🐱, 📚, 🏋️‍♂️, 🎬

좋은 개발 문화를 배우고 전파하는 개발자가 되고싶은 김선동(Dion) 입니다.
특히 코드 리뷰를 매우 좋아합니다. 코드 리뷰를 통해 더 나은 코드, 더 좋은 코드로 나아갈 수 있다는 믿음이 있습니다. 교육기관에서 코드 리뷰어로 활동했던 경험이 있으며 리뷰를 더 잘하고 싶습니다.

언어와 프레임워크에 구애받지 않는 개발자가 되는 것이 목표입니다. 언어의 특징과 철학에 맞는 코드를 작성하기 위해 노력합니다.

  • 📝 My Resume: https://resume.idion.dev/
  • 📫 How to reach me: [email protected]
  • 📄 Reviewer at CodeSquad, Next-Step
  • 🌱 I’m currently learning or reading: ['Real MySQL', Spring Batch, 'Kubernetes']
  • 🤔 I'm interested in OOP, API Documentation, XP, Agile
  • 😄 Pronouns: Dion bot, D조교

Skill

  • Language: Java Kotlin Javascript TypeScript Python3
  • Backend: Spring Web Security RESOURCEful API MySQL
  • DevOps: AWS Github Actions
2020
2021
  • 일상 속 사물이 알려주는 웹 API 디자인
  • 딥 워크
  • 관계형 데이터베이스 실전 입문
  • 백엔드 스터디(발표형)
  • 백기선님의 온라인 자바 스터디(https://github.com/whiteship/live-study)
  • Next Step - TDD, Clean Code with Java 11기 수료
  • ElasticSearch 실무가이드(대충)
  • 기초부터 다지는 ElasticSearch 운영 노하우(대충)
  • 스프링 부트 실전활용 마스터(대충)
  • CodeSquad 2021 Masters Course Java Backend Reviewer
  • 오브젝트(조영호)
  • Next Step - TDD, Clean Code with Java 12기 Reviewer
  • 익스트림 프로그래밍 읽기 모임
  • 인프런-스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
  • 인프런-스프링 핵심 원리 - 기본편
  • 인프런-실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
  • 인프런-모든 개발자를 위한 HTTP 기본지식
2022
  • 브레이킹 루틴(천인우)
  • Kotlin In Action
  • 프로그래머의 뇌
  • CodeSquad 2022 Masters Course Java Backend Reviewer
  • 코틀린 쿡북
  • Getting Things Done(쏟아지는 일 완벽하게 해내는 법)
  • 함께 자라기
  • AC2 (과정 신청 후 취소)
  • 실용주의 프로그래머
  • 초보를 위한 도커 안내서(subicura)
  • 인프라 공방(Next-Step)
  • 만들면서 배우는 클린 아키텍처

Hits

Repositories

Contribution

backend-interview-question's People

Contributors

94929 avatar cheoljin408 avatar chung10kr avatar goyounha11 avatar hiro032 avatar hyounoh avatar hyunsu4020 avatar jjmin321 avatar joshuagermany avatar kim-sung-jee avatar kses1010 avatar ksundong avatar ndy2 avatar rebwon avatar ryanproback avatar seheoncho avatar seungholee-dev avatar simp7 avatar swj9707 avatar syoungee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

backend-interview-question's Issues

출처가 미비한 부분이 있어 출처 보완 필요

질문 및 답변에 대한 출처를 명시해서 라이선스가 좀 더 잘 지켜질 수 있도록 보완 예정

대략의 분류는

  • 기업 기출(해당 기업 형평성을 위해 정확한 정보 공개X - 삭제 필요시 issue 또는 PR로 삭제 요청)
  • 개인 출제(본인 github 링크 작성)
  • 인터넷(인터넷 url 명시 / 아카이브는 하지 않습니다.)
  • 책(책 인터넷 서점 주소 명시)
  • 기타.

출처는 답변 내부에 포함하고 질문과 답변의 출처가 다르더라도 답변 내부에 포함합니다.

과제 전형 질문드립니다.

깃허브나 구글에 떠돌아다니는 실제 과제 전형을 구현해보는 그런 내용은 해당 레포지토리와 무관한가요?

질문 드립니다.

안녕하세요 :) 해당 레포지토리에 pr 요청 했습니다. 질문에 대한 답변 이외에 참조할 링크도 추가해도 무방한지요?

문서 정돈 및 꾸미기

  • 현재 토글형태로 적용되는 부분이 제대로 정돈이 안되어서, markdown을 포기하고, html로 전환 할지 고민
  • contributor를 가시적으로 보여주는 부분을 상단에 배치하여 참여도를 높이는 방향 고민
  • 중요도 순으로 우선 배치하는 방향 고려 중(중요도는 면접에 자주나오는지, 중요한 개념인지를 종합적으로 고려해 판단.)

N + 1 문제 발생 이유 설명 보완

N + 1 쿼리는 JPA의 프록시로 인한 지연 로딩 때문에 발생합니다.

의도를 제가 잘 파악한 것인지 모르겠지만, 일반적으로 N + 1 문제는 즉시로딩을 사용할 때 많이 발생합니다.
또한, 지연 로딩을 사용하더라도 말씀하신 것처럼 프록시가 엔티티를 가져오는 단계에서는 N + 1 문제가 발생합니다.

N + 1 쿼리의 발생 이유는 JPQL이 영속성 컨텍스트를 고려하지 않고 항상 데이터베이스에서 직접 결과를 조회하려고 하는 특성 때문이라고 설명하는 게 적절하다고 생각합니다.

전략 패턴 설명 오류

디자인 패턴 - 전략 패턴의 설명이 전략 패턴 보다는 가교 패턴에 가까운 것 같습니다.
두 패턴 모두 작동 원리는 비슷합니다. 다만 전략 패턴은 행동 패턴으로 '알고리즘의 캡슐화'를 주요한 목적으로 하고 있는 반면 가교 패턴은 구조 패턴으로 '추상과 구현을 분리'를 주요한 목적으로 하고 있습니다.(에릭 감마 외 3인, GoF의 디자인 패턴, 프로텍 미디어, 2015)
오류인지 아닌지 확실하지 않아서 이슈로 남깁니다. 만약 이슈가 채택되면 해당 부분을 수정해 보겠습니다.

몇가지 보완점 입니다.

  1. 프로레스와 스레드의 차이를 설명해보세요.
    스레드는 운영체제의 스케쥴러에 의해 관리되는 실행단위 입니다.
    프로세스는 저장장치에 있는 프로그램이 메모리로 로드됐을때의 하나의 인스턴스입니다. 프로세스는 쓰레드에 의해서 실행됩니다.
    하나의 프로세스에는 여러개의 쓰레드가 존재 할 수 있으며 이 쓰레드들은 해당 프로세스에 할당된 자원들을 공유 할 수 있습니다. 프로세스는 각자의 메모리 주소 영역을 가지며 운영체제의 통제 하에 다른 프로세스와 자원을 공유하거나 독점 할 수 있습니다.

  2. 컨텍스트 스위칭에 대해 설명해보세요.
    시간 공유 운영체제 (time sharing operating system)에서는 제한된 실행자원 (e.g., CPU, memory)이 여러개의 프로세스를 번갈아가면서 실행합니다. 예를 들어 단일코어 환경에서는 여러개의 프로세스들이 번갈아가면서 cpu 코어의 실행시간을 할당받습니다. 이때 cpu 코어에서 실행중이던 프로세스가 다른 프로세스로 변경될때를 컨텍스트 스위치라고 하고 이때 여러가지 추가적인 오버헤드가 필요합니다. 예를들어 tlb flush, cache flush, interrupt handling overhead 등등이요. cpu가 아무런 일을 하지 않기때문에 성능저하가 일어난다는 것은 정확하다고 볼 수 없습니다.

  3. 동기와 비동기의 차이.
    동기 (블로킹)은 호출 메서드가 데이터와 제어 (control)을 피호출 메서드에게 넘깁니다. 그래서 호출 메서드는 비호출 메서드가 리턴될때까지 실행을 멈춥니다 (블로킹). 반면 비동기는 호출 메서드가 데이터만을 피호출 메서드에게 넘기기때문에 피호출 메서드가 리턴하기 전이라도 호출 메서드는 그대로 실행이 가능합니다. 비동기에서는 주로 polling이나 interrupt를 이용합니다. "동기 논블로킹" 는 모순으로 보입니다.

  4. 가상 메모리에 대해 설명해보세요.
    실제 메모리크기보다 더 큰 메모리 영역을 사용할 수 있게 해주는 것 외에도 대표적인 장점이 있는데요, 프로세스간에 고립화 (isolation)가 가능하다는 것입니다. MMU는 하드웨어이고 OS는 MMU가 가상메모리 주소의 번역을 돕는 역할입니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.