부제: 카카오 신입 공채 면접관 후기 우리나라 대학생들이 가장 선호하는 IT기업은 잘 알려진 대로 "네카라쿠배"로 일컬어지는 5개 회사이다. 네카라쿠배에서 "카"를 맡고 있는 카카오의 신입 공채 후기를 남겨본다. 나는 면접관으로 총 2년간 참여했다. 그냥 면접관 후기라고 하면 조회수가 안 나올까 봐 제목 낚시를 좀 해봤다 크크 이 글의 독자는 대부분 카카오 개발자를 꿈꾸는 학생 또는 직장인일 것이고, 그 분들이 어떤 정보를 원하실지 생각해봤는데 아무래도 면접관으로써 느낀점 어떻게 해야 합격할 수 있는가? 일 것 같다. 그럼 먼저 느낀 점부터 소개한다. 1-A. 고시 수준의 코딩 테스트 매년 엄청난 수의 지원자가 몰려들고, 채용방식이 "블라인드"로 지원자의 배경에 대해 주어지는 것이 전혀 없기에 코딩 테스..
부제: RabbitMQ Spring 연동, RabbitMQ 연동 이전 글에서 이어집니다. 이번 시리즈에서는 Spring AMQP에 대해 소개하고 간단한 예제를 작성해본다. 이전 글에서 이어서 간단한 예제를 소개할 것이다. 1. 사전 준비 사항 먼저 Spring Boot와 JAVA를 구동할 적절한 IDE가 필요하다. IntelliJ 를 추천한다. 그리고 실행 중인 RabbitMQ가 필요한데, 이번 예제에서는 Docker를 활용해서 간단하게 실행해볼 예정이다. 그러므로 Docker 설치가 필요하다. Docker가 설치된 PC에서 아래 명령어를 실행하면 RabbitMQ를 실행할 수 있다. docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabb..
부제: RabbitMQ Spring 연동, RabbitMQ 연동 이번 시리즈에서는 간단한 Spring AMQP 예제를 소개한다. 예제를 시작하기 전에 이번 포스팅에서는 AMQP라는 것에 대해 소개할 것이다. 1. AMQP 정의 Advanced Message Queuing Protocol의 약자이다. 이름에서 알 수 있듯 MQ(Message Queuing)기반의 프로토콜이다. 메시지관리, 큐잉, 라우팅(peer to peer, pub-sub), 신뢰성, 보안 등에 대해 정의하고 있다. Spring AMQP는 Spring에서 AMQP기반 메시징 애플리케이션을 개발할 수 있도록 Spring의 개념을 적용한 라이브러리이다. 비동기 메시지 리스너, 큐 선언, exchange 선언 및 binding 기능 등 전반적..
부제: 인터페이스와 추상클래스의 비교 인터페이스와 추상클래스의 차이점. JAVA 서적 아무거나 펴보면 무조건 나오는 내용이다. 혹시 당신은 그냥 문법적인 차이만 대충 알고 넘어가지 않았는가? 이번 글에서는 인터페이스와 추상클래스를 비교해보겠다. 1. Abstract Class 클래스의 형태 중 하나이다. 클래스는 일반 클래스(concrete class)와 추상 클래스(abstract class)로 나뉜다. 클래스를 abstract로 정의한 경우 그 클래스는 추상 클래스가 된다. 추상 클래스의 선언 예는 아래와 같다. public abstract class Human { public abstract void sleep(); public abstract int food(); } 추상 클래스가 일반 클래스와 ..
부제: 지극히 주관적인 컴퓨터공학과 졸업 후 진로 글쓴이는 4년제 대학의 컴퓨터공학과를 졸업하고 IT 플랫폼 기업에서 소프트웨어 개발자로 일하고 있다. 대학생 때의 기억을 더듬어보면 꽤 많은 선배, 동기들이 졸업 후 IT 플랫폼 기업 또는 스타트업 개발자를 택하지 않았던 것 같다. 대학을 졸업한지 5년정도 되었는데.. 내가 대학을 다니던 시절보다 소프트웨어 개발자가 되고 싶어하는 컴퓨터공학과 학생이 많은 것 같다. 대부분 학문이 그렇겠지만, 컴퓨터공학은 적응을 못하는 학생들이 많은 편이다. 특히, 개발이 적성에 맞지 않아 마음고생을 많이하고 진로에 대해 걱정하는 학생들이 많을 것 같다. 그래서 이번 글에서는 글쓴이가 직접 겪거나 본 것을 기반으로 컴퓨터 공학과를 졸업하면 어떤 업계로 진출할 수 있는 지 ..
이 글을 구글링해서 찾을 정도라면 Proxy가 뭔지 어느정도 이해하고 있을 것으로 생각한다. 혹시 Proxy가 뭔지 모르는 사람은 여기를 참고하자. 외부 repo 접근이 proxy로 인해 자유롭지 못할 경우에 꼭 설정해줘야만 한다. 나는 주로 엔터프라이즈 환경 (ex: 회사에서 개발할 때) proxy 문제를 겪는다. 1. YUMsudo vi /etc/yum.conf # 맨 밑에 아래 내용을 추가한다. proxy={{YOUR_PROXY_SERVER}} proxy_username={{USER_NAME}} proxy_password={{PASSWORD}} 2. WGETsudo vi ~/.wgetrc # 맨 밑에 아래 내용을 추가한다. http_proxy={{YOUR_PROXY_SERVER}} proxy_use..
부제: 비동기 호출 시 stacktrace가 유실되는 문제. javascript async stacktrace has lost Node.js는 single-thread 기반 비동기 방식이다. 그래서 나는 Node.js로 서버 애플리케이션을 개발할 때 Javascript가 ES6 이후로 지원하는 promise, async, await를 많이 사용한다. 나처럼 개발하는 사람들은 한 번쯤 직면 했을 문제에 대해 다뤄보려고 한다. 그건 바로.. 비동기 호출 시 Error의 stacktrace가 사라지는 현상 나는 서론을 쓰는데 재능이 없으니 바로 예제를 보여주겠다. 1. stacktrace가 없어지는 상황async function functionOne() { throw new Error('Error here p..
작은 규모의 서비스를 개발한다면 서버와 클라이언트 간 호출이 대부분일 것이다. 하지만 더 큰 서비스가 될 수록 서버와 서버간 HTTP 호출이 필요해진다. 서버 아키택처가 MSA와 같은 형태라면 정말 많이 사용할 것이다. Spring boot에서는 다른 서버의 API endpoint를 호출할 때 RestTemplate을 많이 쓴다. 이 글에서는 RestTemplate을 활용하여 다른 서버를 호출하는 서비스 예제를 다뤄볼 것이다. 시작하기 전에, RestTemplate을 잘 모른다면 여기를 참고하자. 이 예제는 JAVA 11로 작성되었으며 프로젝트의 전체 내용은 Github에 공유되어있다. 1. 설정하기먼저 Spring boot를 사용하기 위해 build.gradle을 아래와 같이 설정한다.plugins {..
Spring으로 개발하면서 개인적으로 궁금했던 내용이다. (나는 Field Injection을 자주 쓴다.) 왜 Field Injection을 쓰면 IntelliJ에서 쓰지 말라고 경고할까? 나는 그동안 Field Injection으로 불편함 없이 개발해왔다. 게다가 Field Injection이 Constructor Injection 보다 작성할 코드가 더 적다. 그러나 IntelliJ는 항상 아래와 같은 Yellow-Block으로 나한테 엄포를 놓는다. Field Injection을 쓴다는 건 소스코드 상의 Warning과 같다는 건데.. 궁금해져서 찾아볼 겸 이 내용으로 오랜만에 블로그에도 남긴다. 1. Field Injection? Constructor Injection? 먼저 Field Inje..
부제: Hibernate Dynamic Eager and Lazy Load. JPA eager/lazy load. JPA eager load 하기 Hibernate는 JPA의 대표주자라고 할 수 있는 ORM(Object Relational Mapping)이다. MyBatis와 같은 SQL-Mapper와 달리 개발자가 쿼리를 직접 작성하지 않는다는 특징이 있다. 그래서 생산성이 좋고 SQL을 직접 작성하지 않으니 쓸데없이 DAO를 찍어낼 필요도 없고 장점이 많지만, 이 글에서 다루지 않을 것이다. 1. Eager load 와 Lazy load Eager-load와 Lazy-load에 대해 먼저 짚고 넘어가자. 뒤따라올 두개의 모델 예제를 보면 된다. @Entity public class Student { ..