전체 글 348

2022 카카오 post Server 최종 합격 후기

2022 카카오 post Server 최종 합격 후기 지원 동기 먼저 나는 현재 현대자동차의 IT개발자로 일하고 있다. 너무 좋은 회사라고 생각하지만, 내가 원했던 직무에 배치받지 못하고 새로운 것을 하느라 많은 고민을 했다. 그러던 중 카카오에서 백엔드 개발자를 뽑는다는 이야기를 듣고 지원하게 되었다. 서류 경쟁률은 솔직히 잘 모르겠기는 한데, 생각보다 오랜 기간동안 서류 검토가 진행된 것을 봐서는 상세하게 읽어보았던 것 같다. 카카오는 기본적으로 자기소개를 자유양식으로 주기 때문에 작성이 편했다. 나같은 경우는 notion에 적은 자기소개를 제출하였다. 코딩 테스트 코딩 테스트는 프로그래머스 플랫폼을 사용했고, 알고리즘 3문제가 출제되었다. 문제는 카카오 신입사원 문제에 비해서는 쉬었는데 새로운 방식..

기타/일상 2023.03.11

어댑터 패턴

어댑터 패턴 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴 이를 사용해서 클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해준다. 간단히 말하자면 나라마다 110v, 220v 등등 규격이 다른 것처럼 코드도 클라이언트 규격이 다를 수 있는데, 어댑터를 사용해서 이를 알맞게 변환해줄 수 있는 것이다. 그러니까 내가 만들어 낸 코드와 클라이언트가 사용하는 코드 간의 차이가 존재할 때에, 이를 맞추어 주기 위해 interface의 구현체로 만들어 주는 것이다. 코드로 확인 이런 식으로, security package에 3개의 java파일이 있다. LoginHandler public class LoginHandler { UserDetailsService use..

이론 정리 2023.02.26

querydsl에서 다대다 구현하기. 일대다-다대일(feat. Result Aggregation)

querydsl에서 다대다 구현하기. 일대다-다대일(feat. Result Aggregation) 보통 다대다 매핑을 할 때에는 일대다 - 다대일로 매핑하도록 시킨다. 이 이유는 어차피 JPA에서 만든 후에 이를 처리해주기 위한 중간 테이블을 생성하게 된다. 근데 이 테이블을 사용하는 동안 정체모를 쿼리가 발생할 가능성이 있다. 중간 테이블에도 메타 데이터 등의 추가 쿼리가 필요할 수 있는데, 이를 다대다에서는 개발자가 넣어줄 수 없다. 암튼 그래서... 일대다 다대일로 하는데, 여기서 하나의 파트에서 반대 파트의 데이터를 가져오는 방법을 살펴보도록 한다. 상황 먼저 프로젝트 밈위키 에서는 대충 뭐 이런 느낌으로 "밈 - 태그" 를 갖고 있다. 이는 생각해보면 이렇게 밈과 태그가 다대다로 묶여 있어서 밈..

TreeSet!!

TreeSet!! public class TreeSet extends AbstractSet implements NavigableSet, Cloneable, java.io.Serializable {}TreeSet의 구조를 살펴보면 다음과 같다. 이는 AbstractSet, NavigableSet인터페이스를 구현하여 사용하고 있다. TreeSet은 이름처럼 Tree와 같은 구조를 가지고 원소들을 저장한다. 특징을 나열하자면 중복 불가 원소의 순서 보존되지 않음 집어넣은대로 들어가는게 아니라 알아서 트리 구조로 정렬시킨다. 요소를 오름차순으로 정렬한다. Thread-safe하지 않다. Red-Black-Tree TreeSet은 내부적으로 Red-Black-Tree를 사용하고 있다. 이게 뭘까...? Red-B..

이론 정리/java 2023.02.13

red-black-tree의 개념, 값 삽입

Red-Black-Tree!! 얘는 일종의 자기 균형 이진탐색 트리이다. 이진탐색트리란 자신의 왼쪽 서브 트리에는 현재 노드보다 작은 것, 오른쪽 서브 트리에는 큰 것만을 가질 수 있다. 이 덕분에 이진탐색트리에서는 조회를 할 때에 O(log n)의 시간 복잡도를 갖는다. 그런데 만약 요런 식으로 조회하면 O(n)의 시간 복잡도를 갖는다. Red-Black-Tree 알고리즘은 이런 문제를 해결하기 위해 도입되었다. 트리의 속성 모든 노드는 Red 혹은 Black이다. root node는 Black!!! 모든 nil노드는 Black!!! nil노드? go언어에서 null을 nil로 써넣는데 존재하지 않음을 의미하는 노드이다. 자녀가 없을 때에 자녀를 nil노드로 표기 이 nil노드는 값이 있는 노드와 동등..

이론 정리 2023.02.12

java에서 정적 멤버를 접근하는 방법??(feat.클래스이름)

정적 멤버를 접근하는 방법?? java에서 정적 맴버를 접근할 때에는 public class Ryoochan { static int iq; public static void main(String[] args) { System.out.println(Ryoochan.iq); // 이런 식으로 } }요렇게, 클래스이름.멤버이름으로 접근한다. 왜지...? 일관된 방법 이게 사실 정적멤버에 접근하는 방식은 3개가 있다. 정적멤버 사용 같은 패키지 상속한 경우 사용 가능 상속하지 않은 경우 사용 불가 this.정적멤버 사용 같은 패키지 상속한 경우 사용 가능 상속하지 않은 경우 사용 불가 다른 패키지 상속한 경우 사용 가능 상속하지 않은 경우 사용 불가 클래스이름.정적멤버 사용 같은 패키지 상속한 경우 사용 가능 ..

이론 정리/java 2023.01.30

Reflection??

https://www.youtube.com/watch?v=67YdHbPZJn4 를 보고 정리한 글입니다. Reflection?? 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드와 타입, 변수들에 접근할 수 있도록 해주는 java API 이는 클래스로더를 통해 읽어온 클래스 정보를 사용하는 기술이다. 이를 사용하여 클래스를 읽어오거나, 인스턴스를 만들거나, 메서드를 실행하거나, 필드의 값을 가져오거나 변경하는 등의 행위가 가능하다. 사용법 특정 annotation이 붙어있는 필드 또는 메서드 읽어오기(JUnit, Spring) 특정 이름 패턴에 해당하는 메서드 목록 가져와 호출하기(Getter, Setter) Reflection 먼저 Spring은 어떻게 실행시점에 bean을 주입할 수 있을까? 또..

이론 정리/java 2023.01.26