오늘 면접 대답 못한거 정리

Ada·2022년 12월 27일
0

자유 공부

목록 보기
5/19

JPA에서 QueryDsl 로 변경해서 성능이 개선된 이유

N+1 문제나 로딩 문제를 해결 할 수 있습니다.
동적 쿼리 작성이 가능합니다.

JPA가 아닌 Query DSL의 필요성

직접적인 연관관계를 맺지 않는 Entity의 Join이 어렵습니다.
Entity들 중 원하는 필드만 가져올 수 없습니다.

(One to Many 연관관계의 기본 FetchType이 Lazy이기 때문에, 수 많은 단계의 반복문, select 쿼리, 비교연산이 발생할 수 있으며, 최악의 경우 연관된 모든 Entity가 메모리에 로드 될 수 있습니다. One to Many 연관관계의 FetchType을 Eager로 설정하면 A와 연관된 모든 B와 C를 읽으므로 Join 쿼리를 통해 데이터를 한번에 읽을 수 있지만, A와 연관된 모든 Entity를 읽어오게 되며, 여전히 반복문과 비교연산을 통해 원하는 Entity를 탐색해야 하는 문제가 있습니다.

One to Many 연관관계를 양방향으로 설정하고 FetchType이 Eager이면(Many to One 연관관계의 기본 FetchType은 Eager입니다), C를 찾을 때, B와 A도 함께 데이터베이스에서 읽기 때문에 여러 단계의 Join 쿼리를 실행시킬 수 있습니다. 다만 FetchType을 Eager로 설정한 경우, 연관된 Entity가 필요하지 않은 경우에도 해당 Entity를 읽는 문제가 있습니다.

[출처]

객체 지향 언어의 특징

캡슐화 - 데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 것

상속 - 상위 클래스의 모든걸 하위 클래스가 모두 이어 받는것

다형성- 상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것
대표적인 예로는 자바의 오버로딩과 오버라이딩이 있습니다.

추상화 - 객체의 공통적인 속성과 기능을 추출하여 정의하는것

장점

  1. 재사용성
    상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음.

  2. 생산성 향상
    잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있음.

  3. 자연적인 모델링
    우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.

  4. 유지보수의 우수성
    프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라할 수 있다.

단점

  1. 개발속도가 느린점
    객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.

  2. 실행속도가 느린점

객체지향언어는 대체적으로 실행속도가 느리다.

  1. 코딩난이도 상승
    다중 상속이 지원되는 C++ 같은 경우에 너무 복잡해져 코딩의 난이도가 상승할 수 있다.

파이썬 / 자바스크립트는 객체지향 언어인가?

파이썬 -> 객체 지향 언어!!

파이썬은 절차를 지향할수도, 객체를 지향할수도 있지만
조금 더 객체 지향 프로그래밍에 용이하기 때문에 객체지향 언어라고 부른다.

✅ 파이썬에도 클래스와 상속 개념이 존재한다...

자바스크립트 -> 객체지향 언어의 특징 구현 가능!

함수로 클래스의 인스턴스를 생성하는 코드와 유사하게 구현 가능

클래스 기반의 전통적 상속은 지원하지 않지만,
객체 프로토타입 체인을 이용하여 상속 구현 가능

다양한 방법으로 캡슐화 가능

자바에서의 최상위 클래스는 어떤건가요?

java.lang.Object 입니다.

Object 클래스 : 모든 자바 클래스의 부모 클래스이며 모든 자식 클래스는 Object의 메서드를 가집니다

Oauth 에 대하여

인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준입니다

(대체재를 질문하셨었는데... 집에 와서 아무리 찾아봐도 모르겠다...
아는 분이 계시다면 알려주세요ㅠㅠㅠㅠ)

스택과 큐

스택

  • 차곡차곡 쌓아 올린 형태의 자료구조
  • 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있음
  • 후입선출 구조
  • 수식의 괄호 검사

  • 한쪽 끝에서 삽입(리어), 다른쪽 끝에서 삭제 작업(프론트)
  • 선입선출
  • 은행 업무 / 프로세스 관리 / 캐시 구현

리스트와 링크드 리스트의 차이점

ArrayList는 index가 있고, LikedList는 각 원소마다 앞,뒤 원소의 위치값을 갖고 있습니다.

ArrayList는 해당 index의 데이터를 한번에 가져올 수 있고,
데이터의 삽입과 삭제 시 그만큼 위치를 맞춰줘야 하기 때문에 비효율적입니다.

LikedList는 양방향의 연결 리스트로 구성되어 있어 참조하려는 원소에 따라 정방향 또는 역순으로 조회 가능합니다.

순차적 접근이기 때문에 검색(조회) 속도가 느리지만
데이터 추가,삭제 시 가리키고 있는 주소의 값만 변경하면 되기 때문에 효율적입니다.

따라서 정적인 데이터를 활용하면서 조회가 빈번하다면 ArrayList를 사용하고
동적으로 추가/삭제 요구사항이 빈번하다면 LikedList를 사용하는것이 좋습니다.

자바를 만든 사람

제임스 고슬링
캐나다의 소프트웨어 개발자


느낀점...

아는 것, 공부했던 것 들을 대답 못해서 너무너무 아쉽다...

회사가 정말 좋아보이고 개발자 교육에도 열려있는 것 같아서 꼭 가고싶은데ㅠㅠㅠㅠㅠㅠ

면접 준비를 더 잘 할 걸....후회가 많이 남는다ㅠㅠㅠㅠ
목터뷰 문제가 많이 나왔는데..ㅠㅠㅠㅠㅠㅠㅠ목터뷰 많이 공부해야겠다...

그리고 스터디 모의면접 질문과 실제 면접 질문이 많이 중복되었다!!!

스터디...진짜 소중하고 중요하다....

기본기 공부, 그리고 당당하게 말하기, 면접 연습 많이 해야겠다!!!!

좋은 회사에서 첫 면접을 치뤄서 많이많이 아쉽다.

다른 면접을 많이 보고 갔으면 좀 더 나았을까 싶지만....

이미 지난 일이니까 후회는 그만 하고 남은 과제랑 코테, 면접에 집중해야겠다!!!

아 그리고 생각보다 면접관분들이 무서운분들이 아니셨다.
최악의 상황만 상상해서 그런지 몰라도 굉장히 젠틀하셨고
내 이력서랑 포폴, 블로그까지 봐주셔서 지원자에 대한 관심이 많으시다고 느껴져서 기분이 좋았다.

다른 회사 면접 스타일은 어떨지 궁금하다!!
지원 더 많이 해서 서류 합격 많이 되도록 노력해야지~!~!

profile
백엔드 프로그래머

0개의 댓글