덕토피아

· 레퍼런스
ChatGPT에게 실생활 시나리오를 포함하여 Java Streams API를 가르쳐 달라고 부탁했습니다. 이 글에서 ChatGPT가 얼마나 잘 해냈는지 보실래요? 기본 직원 클래스 만들기 Prompt 1: create an employee class with multiple data fields, make sure to include a list, a map, dates and numbers along with Boolean and string. (list, map, dates와 numbers, boolean, string을 포함한 여러 데이터 필드로 직원 클래스를 만들어 줘) import java.util.Date; import java.util.HashMap; import java.util.List;..
· 레퍼런스
시스템 디자인은 복잡하고 하나의 디자인이 모든 경우에 적합한 것도 아닙니다. 아래에서 면접에서 사용할 수 있는 유용한 규칙을 공유하겠습니다. 📌 읽기가 많은 시스템의 경우- 캐시 사용을 고려 📌 쓰기가 많은 시스템의 경우 - 비동기 처리를 위해 Message Queue 사용 📌 낮은 지연시간을 요구하는 경우 - 캐시 및 CDN 사용을 고려 📌 ACID 원칙이 필요한 경우 - RDBMS/SQL DB로 이동 📌 비정형 데이터의 경우 - NoSQL DB로 이동 📌 복잡한 데이터(비디오, 이미지, 파일)의 경우 - Blob/Object 저장소로 이동 📌 복잡한 사전 계산이 필요한 경우 - Message Queue & 캐시를 이용 📌 대용량 데이터 검색 - 검색 인덱스, 트리 또는 검색 엔진을 고려 📌 SQL 데..
· 레퍼런스
NullPointerException 위험을 줄이려면 메서드에서 null 값을 반환하지 않도록 노력하세요. 값이 없는 경우를 전달하기 위해서는 Optional, 빈 컬렉션, 또는 에러 핸들링을 사용하는 것과 같은 대체 전략을 사용하십시오. 📌 null을 반환하는 대신, Optional을 사용하여 값의 부재를 명시적으로 표현하는 것을 고려하세요. 이를 통해 클라이언트는 값이 있는 경우와 없는 경우를 모두 처리할 수 있습니다. import java.util.Optional; // A service class that may or may not find a user class UserService { // Simulating a method that may or may not find a user by ID ..
· 레퍼런스
Topic 5: Hibernate/Spring-data Jpa/Database(SQL or NoSQL) 이 토픽에서는 Hibernate JPA 프레임워크가 등장하는 데이터 계층을 다룹니다. 면접관이 데이터베이스 담당자라면 그에 관련해 더 깊이 물어볼 수 있습니다. [토픽] JPA 레파지토리 엔티티들의 관계 SQL 쿼리 관계형과 비관계형 DB 개념 DB에서의 CRUD 연산 join, indexing, procs, functions [질문] SQL과 NoSQL의 차이는 무엇인가요? 데이터베이스의 샤딩이 무엇인가요? JPA란 무엇인가요? 부모-자식 관계란 무엇인가요? 조인이란 무엇인가요? 관련된 아티클1, 아티클2 Topic 6: 코딩 자바 코딩 토픽에서는 스트림 API를 사용하여 코드를 작성하는 것이 중요하..
· 이것저것
지금 참가하고 있는 개발자 모임에서 코드트리와 협업하는 이벤트가 생겼습니다. 솔직한 후기 글만 작성하면 무료로 체험할 수 있다는 말에 얼른 신청을 하였습니다. 꼭 코딩테스트를 위한 준비라기보다는 부족했던 알고리즘 지식을 조금 더 보충할 수 있는 좋은 기회가 될 거라 기대하였습니다. 코드트리는 어떤 사이트인가요? 코드트리는 알고리즘 공부나 코딩테스틀 위한 학습 사이트입니다. 사이트에 들어가보면 가장 먼저 커리큘럼이 소개되어 있습니다. 총 6개의 레벨로 구성되어 있습니다. 여기서 1레벨은 무료로 학습할 수 있으니 결제가 고민된다면 한 번 체험해 보고 결정하시는 것을 추천드립니다. 어떤 커리큘럼을 고를지 고민돼요 이렇게 레벨이 많으면 좋긴 한데, 지금 내 실력에 어떤 커리큘럼을 공부하면 좋을까 고민이 되더라구..
· 레퍼런스
면접을 통과한다는 것은 일반적으로 두 번의 씨름을 통과함을 의미합니다. HR과의 면담은 보통은 더 쉽습니다. 대부분의 사람들이 어려움을 겪는 것은 기술 면접입니다. 특히 대기업과 IT 회사는 일반적으로 인터뷰 하나당 약 1시간을 확보합니다. 자바는 배울 것이 많은 방대한 주제입니다. 자바 외에도, 면접관들은 여러분의 프로젝트, 아키텍처, 클라우드 컴퓨팅, 쿠버네티스 등에 대해 물어볼 것입니다. 다룰 것이 너무 많아요! 🤮 그래서 기본기를 잘 익히고 코딩 실력을 연습하는 데 집중해야 합니다. 각 주제를 철저히 다루면서 차근차근 진행해 나가도록 하겠습니다. 이제 1시간의 면접을 시작한다고 가정하겠습니다. 각 주제에 대해 8~10분을 배정해 면접을 진행하고, 면접관으로서 어떤 질문을 할 것인지 알아보겠습니다...
회사 프로젝트 중에 멀티모듈을 사용하는 레포가 있습니다. gradle 의존성을 정리하던 와중 공통 모듈의 의존성을 포함하지 못하는 이슈가 생겼습니다. 이번에는 해당 이슈를 트러블슈팅한 경험을 소개하겠습니다. 프로젝트 구조 프로젝트 구조는 다음과 같습니다. example-common이라는 이름의 공통 모듈이 하나, example-common을 import 하는 example-service 서비스가 있습니다. example-common (공통모듈) example-service (서비스) example-common 모듈의 build.gradle 내용은 다음과 같습니다. 전체는 아니고 일부만 가져왔습니다. dependencies { implementation 'org.elasticsearch.client:ela..
· 레퍼런스
스프링 부트 애플리케이션인 lombok과 자바 14에서 출시된 새로운 기능인 record 클래스, 두 가지를 비교해 봅시다. 이 둘의 차이점과 어떤 것을 사용하는 것이 더 나은지 논의하기 전에, record와 lombok에 대해 간단하게 알아보겠습니다. Project Lombok Lombok은 에디터와 빌드 도구에 자동으로 연결되어 자바 개발 속도를 높여주는 자바 라이브러리입니다. getter와 equals 메서드를 작성할 필요가 없습니다. 어노테이션 하나만 추가하면 완전한 기능을 추가할 수 있으니까요. 자바로 개발하면서 매번 클래스에 getter/setter를 선언하는 것은 매우 고통스러운 일이었습니다. 새로운 클래스가 생성될 때마다 모든 빈에 대해 동일한 단계를 추가하는 것은 나쁜 디자인일 겁니다. ..
엘라스틱서치는 검색에 뛰어난 성능을 보이기 때문에 지원하는 쿼리의 종류도 많습니다. 구글링을 통해 손쉽게 사용할 수 있지만 어떤 상황에 어떤 쿼리를 사용해야 할지 미리 알고 있다면 찾는 수고로움도 줄어들 것입니다. 이번에는 엘라스틱서치의 기본 쿼리에 대해 알아보겠습니다. 1. 검색 대상 지정 엘라스틱서치는 다양한 종류의 검색 쿼리를 제공하지만, 그중 어떤 쿼리를 사용해도 동일한 검색 API를 사용합니다. 사용되는 API는 다음과 같습니다. GET [인덱스 이름]/_search POST [인덱스 이름]/_search GET _search POST _search 인덱스 이름을 지정하지 않으면 전체 인덱스에 대해서 검색합니다. 성능적인 부담이 되므로 인덱스 이름을 지정해서 쿼리를 날리는 것을 권장합니다. 인덱..
· 이것저것
작년 겨울에 시작했던 우아한 스터디가 12월 말에 끝나게 되어서, 후기를 작성해 볼까 합니다. 총 두달동안 진행되었고, 스터디 대상 책은 "엘라스틱서치 바이블"이었습니다. 스터디 신청하기 전에 잠깐 목차를 훑어보았었는데, 엘라스틱서치를 공부해보고자 하는 사람에게 걸맞아 보였습니다. 저 역시 검색 팀에 있었기에 스터디에 흥미를 가지고 참가 신청을 하게 되었습니다. 스터디 참가는 구글 폼으로 내야 했었습니다. 이름과 휴대폰 번호, 직무 및 경력, 소속 등 간단하게 적을 수 있는 것들을 적고 나니 가장 중요한 질문인 '본 스터디를 참가하는 이유'가 나왔습니다. 아마 이 답변으로 스터디에 참가할 사람을 선발하는 거라고 생각했기에, 꽤나 공을 들여서 작성했습니다. 답변 전문을 올리지는 못하겠지만(부끄럽기도 하고)..
둘기덕
'분류 전체보기' 카테고리의 글 목록 (2 Page)