코딩 인터뷰를 위한 알고리즘 치트시트 - 리트코드LeetCode 문제를 풀면서 배우는 코딩 테스트
푸둥라이 지음, 이춘혁 옮김 / 제이펍 / 2022년 10월
평점 :
장바구니담기


이번 도서 후기는 여러 알고리즘 유형을 공부해볼 수 있는 책이다.

코딩테스트는 대부분 IT 회사에 입사하기 위한 필수 관문으로, 신입, 경력 개발자 모두 알고리즘 공부를 틈틈이 하는 것으로 알고 있다.

나도 현재 매일 한 문제씩 알고리즘 문제를 풀고 있다.

코딩테스트를 준비하기 위해 처음 알고리즘 공부를 했었을 때, 문제를 풀더라도 시간 복잡도를 줄이기 위해서 어떤 방법으로 접근해야 할지 알지 못했었다.

그 이후부터 지금까지 알고리즘 공부를 틈틈이 하고 있는데, 처음 시작했을 때에 비해서 개인적으로 평가하기에 문제를 풀기 전 어떻게 접근을 해야 하는지 눈에 보이기 시작했다.

시중에 출간된 여러 알고리즘 관련 책들이 많이 나와 있는데 필수 알고리즘 개념과 문제를 제공한다.

이 책도 알고리즘을 유형별로 공부해볼 수 있도록 구성되어 있다.

하지만 다른 책들과의 차이점은 대다수의 개발자들이 알고 있는 코딩테스트 사이트인 leetcode의 문제로 실습하면서 코딩테스트 시 자주 출제되는 유형의 개념과 접근법을 익힐 수 있도록 구성되어 있다.

또한 코딩테스트 뿐만 아니라 기술 면접 시 자주 물어보는 여러 질문들에 대해서도 다루기 때문에 코딩테스트와 기술 면접을 준비하는 분들에게는 도움이 될 책이다.

그간 여러 알고리즘 책으로 공부해보았는데, 이 책의 장점은 최신 유형의 문제를 많이 다룬다는 점이다.

또한 알고리즘 문제를 풀어가는 데에 있어서 주의해야할 점들에 대해서도 다루기 때문에 직접 문제를 풀어보면서 나의 풀이법에 결함이 있는지도 비교해볼 수 있다.

그리고 풀이 과정을 그림과 함께 상세하게 설명하기 때문에 이해가 되지 않을 만한 내용도 독자가 이해할 수 있도록 내용이 구성되어 있다.

이 책은 알고리즘을 처음 접하는 분들에게는 추천하기 어렵지만 알고리즘을 공부하고 있고, 최신 유형의 문제를 익히고 싶은 분들과 알고리즘의 접근법을 향상시키고 싶은 분들에게 추천한다.

그리고 나와 같이 leetcode에서 코딩테스트 문제를 풀고 있는 개발자에게도 도움이 되지 않을까 싶다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
헤드 퍼스트 디자인 패턴 - 14가지 GoF 필살 패턴! 유지 관리가 편리한 객체지향 소프트웨어를 만드는 법, 개정판
에릭 프리먼 외 지음, 서환수 옮김 / 한빛미디어 / 2022년 3월
평점 :
장바구니담기


※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


이 책은 자바 개발자라면 한번쯤 들어보았을 디자인패턴에 관한 책이다.

오래 전부터 개발자 선배들이 겪었던 여러 시행착오를 특정 상황에서 발생하는 문제 패턴에 대한 해결방안을 모아두어 자바 개발자라면 반드시 읽어보아야 할 책으로 꼽힌다.

나도 신입 개발자 시절 디자인 패턴에 대해 들어보았고, 한번 읽어본 적이 있다.

그 당시에는 이 내용들이 많이 어렵게 느껴졌었는데, 개발 경력을 쌓아오고 있는 지금에서 다시 한번 읽어보니 당시 어렵게 느껴졌던 내용들이 이해하기 어렵지 않게 느껴졌다.

처음 읽었을 때도 지금도 느끼는 것이지만 디자인 패턴을 익혀두면 애플리케이션을 개발하는데 경험하는 여러 문제와 수정사항들을 줄여나갈 수 있다고 생각한다.

이 책은 하나하나의 패턴에 대해 발생할 수 있는 여러 상황을 해결하며 작동 원리를 이해하는 데에 도움을 주며, 핵심 패턴이 무엇이고 어떻게 적용해야 하는 지에 대해서 요점을 익힐 수 있다.

또한 공부한 패턴을 어떻게 활용할 수 있는 지에 대해서 생각해볼 수 있다는 점에서 실무에서 비슷한 상황에 패턴을 적용해보도록 도움을 준다.

그리고 많은 연습문제를 통해서 이 책에서 익힌 패턴들을 적용해볼 수 있다.

특히 이번 개정판은 실무에서 주로 쓰이는 자바 8~16 이상 버전에서 실행할 수 있도록 수정되었다고 하니 예제 코드를 실행하고 실습하는 데에 어려움은 없을 것이다.

이런 명서가 견고한 시스템을 만드는 데에 여러 개발자들에게 도움이 된다는 점에서 그간 나도 여러 상황에서 도움을 받았던 것 같다.

이 책을 조만간 다시 한번 더 읽고 공부해보려고 한다.

다시 읽고 공부할 때는 내용을 간단히 정리하고 모든 연습문제를 모두 풀어볼 계획이다.

그간 잊어버렸던 내용도 있었어서 이번에는 좀 더 깊이 있게 공부해보려고 한다.

아직 디자인 패턴에 대한 책을 읽어보지 못한 분들이나 깊이 있는 공부가 필요한 모든 개발자분들에게 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
자바 코딩 인터뷰 완벽 가이드 - 자바 프로그래머의 취업을 위한 258가지 코딩 인터뷰 & 테스트
안겔 레오나르드 지음, 시진 옮김, 테자스위니 만다르 조그 감수 / 동양북스(동양문고) / 2022년 8월
평점 :
장바구니담기


개발자로 취업을 원하는 혹은 이직을 원하는 개발자들을 위한 모든 준비과정이 담긴 책이다.

자바 언어 기반의 모든 내용이 담겨있다.

얼마전 이직을 한 나도, 주변 지인 개발자들도 이직 준비를 하기 위해 틈틈이 많은 시간을 할애하고 있을 것이다.

가장 많은 준비를 필요로 하는 것은 기준에 따라 다르지만 코딩 테스트가 아닌가 싶다.

나도 이직을 준비하는 과정에서 코딩 테스트를 준비하는 시간을 퇴근 후 매일 할애를 하였었다.

코딩 테스트를 준비하면서 스스로가 판단하기에 실력도, 문제해결의 접근 방법도 처음에 비해 달라졌다.

코딩테스트를 통과한 이후에는 실무 면접을 준비하는 데에 시간을 많이 할애한다.

이미 경력이 있는 개발자의 경우, 지금까지 해왔던 업무에 대한 정리 뿐만 아니라 사용했던 기술에 대해 깊이 있는 준비가 필요하다.

신입 개발자를 지원한 분들의 경우에는 CS 관련 공부를 많이 한다.

이렇듯 취업/이직에 개발자들이 공부하고 준비하는 데에 많은 시간을 할애하고, 유용한 정보들은 구글링을 많이 한다.

이러한 준비과정에서의 모든 정보를 한 권의 책으로 준비할 수 있다면 시간적인 측면에서 이점이 있다.

이 책은 이러한 준비과정에 필요한 모든 정보를 담고 있을 뿐만 아니라 특히 여러 기술들을 깊이 있게 공부해볼 수 있다.

총 4개의 파트로 구성되어 있다.

첫번째는 면접을 준비하는 방법에 대한 내용이 담겨 있다.

이력서 작성방법과 면접 준비 과정 및 이러한 과정에서 흔히 하기 쉬운 실수들을 소개하며 준비과정에서 어떤 점을 유의해야하는지, 면접 과정에서 받을 수 있는 질문에 대해 어떻게 답변을 알 수 있다.

그리고 구글, 아마존 등의 유명한 IT 기업의 인터뷰를 통해 어떻게 면접을 준비하는 지에 대해 도움을 받을 수 있다.

만약 채용 과정에서 불합격이라는 결과를 받게 된다면 어떻게 마인드 컨트롤을 해야 하는지에 대해 자세히 쓰여져 있다.

두번째는 자바의 핵심 개념을 살펴본다.

자바를 주로 사용하는 개발자들에게도 유용한 챕터인데, 기술 면접 중 받을 수 있는 여러 유형의 질문 소개하고 이에 대한 내용을 자세하게 설명해주고 있다.

면접을 위한 준비에서도 이 내용을 알면 면접관들에게 좋은 인상을 남길 수 있지만 실무에서도 필히 알고 있어야 하는 내용들이기 때문에 이 챕터에서 다루는 질문 중 모르는 내용은 정리해두는 것도 도움이 될 것이다.

이 챕터는 개념 뿐만 아니라 코딩 테스트를 준비하는 데에도 많음 도움이 된다.

기출문제 형식으로 하나하나 다루기 때문에 비슷한 문제를 접하였을 때 어떤 접근 방식으로 풀 수 있는 지에 대한 접근법을 배워볼 수 있다.

세번째는 알고리즘과 자료구조에 관한 내용을 다룬다.

자료구조에 대해 개념을 정리해볼 수 있고, 코딩 테스트에서 접할 수 있는 다양한 유형의 문제들을 풀어볼 수 있어 자료구조에 대한 이해를 많이 높일 수 있다.

네번째는 동시성과 함수형 프로그래밍에 관핸 내용을 다룬다.

이 챕터의 내용은 신입 개발자들에게 다소 어려운 내용일 수 있다.

하지만 자바를 사용하려는, 사용하는 개발자라면 네번째에서 다루는 내용은 꼼꼼히 읽어보았으면 한다.

나의 경우도 이 네번째 챕터는 특히나 꼼꼼히 읽었는데 혼동했던 개념이나 정확히 알지 못했던 개념들을 정리해볼 수 있어서 많은 도움이 된 챕터이다.

처음 이 책을 받아보았을 때 상당한 두께로 많은 부담이 되었다.

하지만 필요한 내용부터 찾아 읽고, 모르는 내용을 알아가니 이 책의 장점을 다시한번 알 수 있었다.

자바 코딩 인터뷰를 준비하는 백과사전같은 이 책을 취업과 이직을 준비하는 개발자들에게 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지
최범균 지음 / 한빛미디어 / 2022년 3월
평점 :
장바구니담기


※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


소프트웨어 개발 방법론에는 많이 알려진 TDD 뿐만 아니라 DDD, BDDD 등 다양하다.

이 중 이 책은 DDD에 대해서 처음 접하는 개발자들이 입문하는 데에 많은 도움을 받을 수 있는 책이다.

이 책은 총 11장으로 구성이 되어있다.

전반부에서는 도메인 모델을 구현할 때 알아야 하는 개념을 다룬다.

도메인 모델을 사용하면 여러 이해 당사자들이 동일한 도메인을 이해하고 관련 내용을 공유하는 데 도움이 된다.

이러한 도메인을 이해하기 위해서 알아야 하는 것들을 통해 모델링을 해본다.

그리고 표현, 응용, 도메인, 인프라스트럭처라는 네 가지 영역에 대해 학습하고, 이 네 가지 영역을 구성하는 데 많이 사용하는 계층 구조와 주요 구성요소에 대해 다룬다.

전반부 내용은 DDD를 이해하는 개념이 소개되기 때문에 놓치지 않고 꼼꼼히 읽어보는 것을 추천한다.

중반부와 후반부는 DDD를 이루는 패턴들을 소개한다.

특히 중/후반부의 내용은 새로 알게된 용어들과 개념들이 많이 포함되어 있다.

나 또한 새로 접한 용어들과 개념들이 상당수 포함되어 있었다.

책에서 설명하는 내용들을 소스 코드와 다이어그램을 함께 보면서 이해하는 것을 추천한다.

책을 처음부터 끝까지 읽어가다보면 실제로 어떻게 구현해 나가는 지 이해하게 된다.

또한 기존 우리가 설계하는 방식에서 발생하는 여러 문제점들을 DDD로 해결하는 방식을 상세하게 설명해주기 때문에 DDD의 이점을 이해해볼 수 있었다.

이번에 책을 읽을 때는 DDD를 입문하여 개념을 이해하는 목표로 읽었었다.

다음에 이 책을 한번 더 볼 생각인데 그때는 내용을 정리하면서 읽어볼 계획이다.

DDD가 무엇인가 정도만 알고 있었었는데, 입문자에게 맞는 맞춤 설명 덕분에 DDD에 한발짝 더 다가갈 수 있었다.

DDD가 무엇인지 모르는 분들이나, DDD에 대해 입문해보고 싶은 분들에게 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
좋은 코드, 나쁜 코드 - 프로그래머의 코드 품질 개선법, 2023년 세종도서 학술부문 추천도서
톰 롱 지음, 차건회 옮김 / 제이펍 / 2022년 5월
평점 :
장바구니담기


책 제목에서 알 수 있듯 어떻게 하면 좋은 코드를 작성할 수 있는지 배울 수 있다.

개발자라면 유명한 "클린코드" 책을 한번쯤 읽어보거나 들어보았을 것이다.

몇년 전 클린코드라는 책을 읽어본 뒤 코드 작성법에 대해 많이 배울 수 있었고, 내가 작성했던 코드와 비교해보는 등 여러 방면에서 나에게 많은 영향력을 주었던 책이다.

이 책도 "클린코드"처럼 올해 나에게 많은 영향력을 준 책이 되었다.

최근 코드를 작성하면서 내가 작성한 코드를 리팩토링하거나 작성한 코드에 대해 동료들에게 피드백을 받을 때, 아직도 좋은 코드를 작성하지 못하는 것 같은 생각이 들었다.

코드를 작성하면서 항상 하는 생각이지만 "어떻게 하면 좋은 코드를 작성할 수 있을까...?"라는 생각을 한다.

나 뿐만 아니라 개발자라면 하는 생각일 것이다.

어떤 코드가 그럼 좋은 코드인지 생각해보면 에러가 없는 코드, 가독성이 좋은 코드, 테스트하는 데에 용이한 코드, 재사용이 가능한 코드, 모듈화가 잘 된 코드 등 각자 마다의 기준이 있을 것이다.

이 책은 이러한 기준들을 여러 도메인에서 사용할 예시 코드를 통해서 설명한다.

이론, 실전, 단위 테스트라는 대주제에서 우리가 한번쯤 고민했던 좋은 코드의 기준에 대한 지침을 소개한다.

이론편은 코드에 대한 개발자의 접근 방식을 통해 코드 품질의 핵심 요소에 대한 소개와 코드에 대한 이해, 재사용, 테스트 하기 쉽게 추상화하는 방법, 내가 작성한 코드를 여러 개발자들이 사용하기 쉽게 작성하는 방법에 대한 가이드, 코드에서 발생한 오류를 어떻게 확인하고 오류 사항을 어떻게 대처하는 지에 대한 내용을 다룬다.

이론편에서 다룬 코드 품질의 핵심 6가지 요소를 소개한다.

  1. 코드는 읽기 쉬워야 한다.

  2. 코드는 예측 가능해야 한다.

  3. 코드를 오용하기 어렵게 만들라.

  4. 코드를 모듈화하라.

  5. 코드를 재사용 가능하고 일반화할 수 있게 작성하라.

  6. 테스트가 용이한 코드를 작성하고 제대로 테스트하라.

실전편은 이론편에서 다룬 코드 품질의 핵심 요소에 대한 실제 예시 코드를 사용한다.

내가 작성한 코드를 여러 개발자들이 이해하기 쉽도록 가독성이 높은 코드와 예측 가능한 코드를 작성하여 다른 개발자들이 코드를 잘못 해석하지 않도록 하는 방법, 코드를 잘못 사용하지 못하게 하여 버그를 발생할 수 있는 가능성을 줄이는 방법, 코드의 모듈화, 재사용화 하는 방법을 다룬다.

특별히 나는 실전편은 이 책을 읽는 분들이라면 꼼꼼하게 읽었으면 한다.

예시 코드를 보면서 내가 이러한 잘못된 코드를 작성하고 있지 않았나라는 생각도 해볼 수 있었다.

단위 테스트편은 단위 테스트 코드를 작성하기 위한 가이드를 설명한다.

단위 테스트 코드를 작성할 때의 고려해야 하는 여러 사항들을 설명하고, 유지보수하기 쉬운 단위 테스트 코드를 작성하기 위해 적용할 수 있는 사례와 기술들을 소개한다.

단위 테스트 코드를 작성해본 적이 있는 분들이나 아직 경험이 없는 분들 모두에게 도움이 될 내용들이다.

단위 테스트편에서 다룬 바람직한 단위 테스트의 주요 특징을 소개한다.

  1. 문제가 생긴 코드의 정확한 탐지

  2. 구현 세부 정보에 구애받지 않음

  3. 실패가 잘 설명됨

  4. 이해하기 쉬운 테스트 코드

  5. 쉽고 빠르게 실행

부록편도 좋은 코드를 작성하기 위한 도움이 될 내용들이 많다.

특히 널 안성과 옵셔널의 내용과 필더 패턴 내용이다.

널 안정성을 활용할 때의 이점을 통해 코드에서 발생하는 오류를 줄이고, 다른 기능을 사용하여 가독성을 높이면서 더 간결한 코드를 작성할 수 있도록 해준다.

옵셔널의 경우에는 널 처리를 제대로 하지 않은 코드의 문제에서 코드의 수가 길어지더라도 에러를 줄이기 위한 효과가 있다는 점에서 옵셔널 사용의 이점을 설명한다.

빌더 패턴은 사용 예를 통해서 좀 더 완성도 있게 구현한 코드를 배울 수 있다.

개발자에게 있어서 좋은 코드를 작성하는 것은 숙명이다.

어떻게 하면 좋은 코드, 완성도 있는 코드를 작성할 수 있을 까라는 고민을 하는 모든 개발자분들께, 그리고 항상 좋은 코드를 작성하기 위해 노력하는 개발자분들에게 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo