Skip to content

Latest commit

 

History

History
132 lines (97 loc) · 9 KB

1회차 정수님.md

File metadata and controls

132 lines (97 loc) · 9 KB

1회차 테크 인터뷰 스터디

정보

  • 참여 인원 : 질문자명(문주성), 답변자명(박정수)

내용

Q1. JAVA 객체지향 언어로서의 특징을 설명해주세요.

{질문 내용이나 의도, 코멘트, 혹은 이어서 던졌던 꼬리질문 등이 있으면 이 곳에 남긴다}

  1. 객체지향 언어의 특징을 설명해주세요.
  • 제가사용하는 자바언어 예시로 설명드리면 부모 자식 관계의 상속, 추상화, 다형성, 캡슐화 가 있습니다. 좀더 세분화 되게 말씀드리자면 정보은닉도있지만 크게는 4가지로 되어있습니다.
  1. 객체지향 특징 중에 제일 큰 장점이 있다면?
  • 4가지가 별개가 아니라 유기적인거라 좀애매하지만 프로그래밍하면서 제일 유념했던것은 다형성과 추상화입니다 다형성이라는 특징을 통해서 절차지향적인 언어에서는 모든게 특정되어있어야하는데 객체지향 언어의 특성으로 런타임에서 유용하게 실행되는 프로그램을 작성할 수 있는 장점이 있다 굳이 뽑자면 인터페이스를 통해 사용하며 그런것들을 많이 느끼게 되었다.
  1. 인터페이스를 통해 느끼게 되었는데 어떤것인지 설명해주세요
  • 예외 처리가 있었다. 세부적인 예외처리가 있을수있는데 그런것들을 다형성을 통해 해결함..? (놓침) 비즈니스로직 익셉션이라는 클래스를 사용하여 어떤 부분에서 사용할 수 있는것인지 드러내려면 드러내고 숨길려면 숨길수있는 좀더 유연한 프로그래밍을 할 수 있었다
  1. 리플렉션에 대해
  • 리플렉션은 컴퓨터 과학에서 사용되는언어인데 객체지향에서 사용될때 런타임에서 객체의 속성 타입을 알지못해도 런타임에서 알수있게하는것을 말한다 자바에서는 리플렉션 api가 따로 있어 제공된다. 1가지 예를 드리면 씨지랩.. 그떄 xml에서 읽어와서 그떄 사용했다. 많이 사용되지않는것으로 알고있다 캐쉬 사용하지 못하고 성능상에 이슈가 있다 알고 있다 천배정도
  1. gc가 무엇이고 어떻게 동작하는지
  • gc 자바같은 언매니지드언어에서 프로그램대신에 매모리를 관리하는 도구이다 . 개발자가 사용한 객체들이 메모리에 올라가게되는데 더이상 사용하지않는것들이 있는데 예를 들자면 캐쉬를 INVALID 즉 무효화 한다

  • vm에 힙 메모리 영역이 있는데 에덴 서바이브 테네어드 영역 3가지 영역이있는데 영제너레이션은 얼마안된객체 몇번의 사이클이 돌아가면 올드제너레이션에 가게된다 32번으로 알고있다. 두곳에서 작동되는 gc 작동 방식이 다르다 보통 stop the ?? old major 사용되는것은 참조가 많으므로 알고리즘이 최적화되어있다..? (놓쳤는데 그냥 끄적) minor gc 이후 놓침

  • 마크앤 스윕 알고리즘 자바 8부터는 핫스팟 vm 스윕은 쓱싹쓱싹해서 치우는것을 말하는데 마크해놓고 치운다. 어떤것을 치우냐 루트객체를 만들어놓고 루트를 타고내려가며 연결되지않은 객체는 현재 사용되지않는 객체라고 판단하고 스윕한다. 마크를 하고 내려왔는데 내려오다가 위에꺼가 없어졌을때 그것을 하기위해 스탑더 모시기하고 그걸 적게하는것이 프로그램 악영향에 끼치지않는다

Q&A1. 점수

  • 질문자 점수: 3.5
  • 답변자 점수: {최소 1점 ~ 최대 5점. 자신이 답변한 내용면으로나 질문자의 의도를 어느 정도 만족시켰다고 생각하는지 스스로 매기는 점수.}

Q&A1. 피드백

  • 질문자 피드백: 초반에 객체지향 특징에 대해 설명할때 사견이 좀더 있었으면 좋을거 같다. GC 설명 같은 경우는 GC를 심도 있게 공부했다는 점이 잘 드러나는것 같아 좋았다.
  • 답변자 피드백:
  • 기타 피드백: "{전체 피드백 시간에 남긴 감상}"(성주), "{전체 피드백 시간에 남긴 감상}"(찬일)

AS1. 개선 답변

{답변 내용. 모든 과정이 끝난 후 답변자가 자신의 답변 내용을 검토하며 느낀 바를 토대로 새롭게 답변을 작성('이렇게 대답했으면 더 좋았을 텐데' 혹은 '새롭게 알게 된 부분에 대해서 다시 답변해봐야겠다' 하는 부분 등). }


Q2. spring을 사용하는 이유가 뭘까요?

  1. spring을 사용하는 이유가 뭘까요?
  • 기본적으로는 프레임워클르 사용하는 이유는 개발성 향상에 있음 구체적으로는 기본적인 공통적인로직들이 있는데 모든 개발자가 일일이 개발할 필요없이 프레임워크에 개발되어있으니 비즈니스로직에 집중하는 장점이 있다 스프링같은경우는 웹프로젝트에 최적화 되어있음 http session 쿠키 등에 대해 프로그래밍이 잘되어있어 개발자는 가져다가 쓰기만하면됨 프레임워크가 재현하는 아키텍처가 있는데 개발자가 능력이 떨어지더라도 최소한의 퍼포먼스를 보여주게 만들어준다
  1. 스프링의 철학에 대해
  • SPRING에 대해 3가지 강조하는게 있다 ioc aop psa
  1. 스프링에서 왜 이걸 강조할까?
  • 좋은 설계에 대해 많이 이야기하는것을 보았다 좋은 설계를 통한 유지 가능한 프로그램 툴을 만드는것을 통해 확장성이 있는 프로그램을만드는것이라 생각한다.

Q&A2. 점수

  • 질문자 점수: 3.5
  • 답변자 점수:

Q&A2. 피드백

  • 질문자 피드백: 2번 질문의 경우 스프링에 철학에 대해 생각하거나 느낀것이 있다면 3번의 꼬리질문이 이어지기전에 같이 이야기해도 좋을것 같다. 2번만으로 답한다면 꼬리질문이 이어지면 좋지만 이어지지 않다면 외워서 왔구나만 적립될 수 있을것 같다. 또한 애플리케이션 구현을 하며 이런 철학에 대해 고민하거나 생각해본 경험이 있다면 같이 말해주는것이 좋을거 같다.
  • 답변자 피드백:
  • 그룹 피드백: "{전체 피드백 시간 감상}"(성주), "{전체 피드백 시간 감상}"(찬일)

AS2. 개선 답변

{답변자가 부족한 점이나 아쉬운 점, 또는 피드백을 받은 점이 있었다면 좀 더 개선된 답변을 작성.}


Q3. jpa가 무엇이고 왜 사용할까요?

{질문 내용에 대한 의도나 코멘트, 혹은 이어서 던졌던 꼬리질문 등이 있으면 이 곳에 남긴다}

  1. jpa가 무엇이고 왜 사용할까요?
  • jpa의 약자이다 java 진영에서 사용하는 orm의 표준 인터페이스다
  • orm이 없이 사용하려면 쿼리를 직접 해야한다 (놓침) 프레임워크에서 기본적으로 제공되는 preparestatement같은 기능을 사용하는 것은 개발자가 신경쓰는것이 많아진다. sql injection등 때문에 객체 개념을 도입할 수 없다. 객체 vs 데이터베이스 모델링개념
  1. 그럼 복잡한 쿼리는 어떻게 하나요
  • querydsl이라는 또다른 orm을 사용하는것으로 알고 있다. 쿼리메서드를 통해 해결할수없는것들은 어노테이션을 통해 제공되고잇다 jpql에서 제공되는 @query를 통해 객체그래프 탐색을 할 수 있게해준다 네이티브 쿼리도 사용할 수 있게 해주는데 그렇게 했을때는 영속화 되지 않는다 다른 문법이 있었던것 같은데..
  • 쿼리가 복잡하더라도 기능과 성능상에 문제가 없다면 그대로 놔둬도 될거같다. 복잡한 쿼리는 쪼개서 사용하는것도 좋은것 같다. 디비 병목현상을 ..(말씀 놓쳤다..)
  1. 지연로딩에 대해 말씀해주세요
  • jpa 구현체 하이버네이트에 캐쉬라는 기능이 있는데 영속성 컨텍스트에 1차 2차캐시에서 나오는 특징인 지연로딩이 있는데 쿼리를 날렸을때 조인되어 사용될수있는 상황일때 A ,B 테이블이 있을때 B테이블 정보가 불필요할떄 지연되게 가져오는것을 말한다.
  1. A테이블에 B테이블을 의존하는 연관관계가 있을때 지연로딩을 사용한다면 A테이블에 있는 B 객체는 어떻게 가져오게 되냐?
  • 프록시 객체를 통해 가져오게되고 진짜 사용하게 될때 실제 객체를 가져와 참조를 바꿔주게한다

Q&A3. 점수

  • 질문자 점수: 5
  • 답변자 점수:

Q&A3. 피드백

  • 질문자 피드백: 개념에 대해 설명하는것이 그치는것이 아니라 이후 여러가지 비교를 통해 설명하는것과 다른 방식에 대해 설명하는 것이 좋았다. 내가 질문한거였지만 제대로 이해못한 부분이 있었고 내가 좀더 공부해 와서 좀더 좋은 꼬리질문을 남기겠다는 나에게 피드백도 남긴다.
  • 답변자 피드백:
  • 그룹 피드백: "{전체 피드백 시간 감상}"(성주), "{전체 피드백 시간 감상}"(찬일)

AS3. 개선 답변

{답변자가 부족한 점이나 아쉬운 점, 또는 피드백을 받은 점이 있었다면 좀 더 개선된 답변을 작성.}