[F-Lab] 자바 백엔드 멘토링 1개월 후기
·
F-Lab
[F-Lab 멘토링 할인 코드]커넥터스2385왜 F-Lab이었나SI 회사 퇴사 전부터 실제 트래픽을 받는 서비스 회사에 들어가 개발하고 싶다는 마음이 컸다.회사를 다니면서 가장 아쉬웠던 부분인 멘토의 부재를 채우기 위해,1:1 멘토링의 장점이 있는 F-Lab을 신청하게 되었다. 자세한 신청 동기는 [F-Lab] 0주차 시작에 정리해 두었다.한 달 동안 무엇을 학습했는가자바의 신 1, 2권을 완독했다.단순히 '책을 읽었다'에 그치는 것이 아니라,책에 없는 깊이 있는 내용들까지 함께 학습했다.원래 알고 있다고 생각했던 자바 개념들을 처음부터 다시 들여다보는 시간이었다. 주차별 회고에 기록했듯이, 멘토링에서 그동안 다룬 주제만 해도 꽤 많다.동시성: synchronized, AtomicInteger, Mute..
[F-Lab] 4주차 정리 및 회고
·
F-Lab
[F-Lab 멘토링 할인 코드]커넥터스2385사전 학습자바의 신 2 4장 ~ 10장멘토링 질문ArrayList 와 LinkedList 차이, VectorConcurrentModificationExceptionHashSet, TreeSet, LinkedHashSet 차이Thread와 Process 차이Thread를 왜 써야 할까?synchronized 키워드AtomicInteger, AtomicBoolean 등의 클래스Mutex와 Semaphore 차이TCP, UDP 차이비대칭 키 암호화AutoClosable 인터페이스Thread Local과제C/C++로 소켓 통신 구현 실습프로젝트 기획 및 기능 구체화JSP 책의 세션, 쿠키, 필터 관련 챕터 읽기객체지향 관련 도서 읽기추가 학습Arrays.copyOf가..
[Java] Arrays.copyOf가 얕은 복사인 이유 — 어셈블리까지 내려가기
·
Java
ArrayList가 가득 차면 어떻게 동작할까?내부 배열이 1.5배로 리사이징되면서 `Arrays.copyOf()`로 기존 요소를 복사한다.이때 복사된 배열은 원본과 같은 객체를 참조한다. 얕은 복사이기 때문이다. 그런데 얕은 복사인 걸 어떻게 알 수 있을까?그걸 확인하기 위해 JDK 소스부터 HotSpot 소스, 그리고 어셈블리 stub까지 따라가 봤다.전체 호출 체인 ArrayList.add(E) → ArrayList.grow() → Arrays.copyOf(T[], int) → System.arraycopy(...) // native 진입점 → JVM_ArrayCopy (jvm.cpp) → ObjArrayKlas..
[F-Lab] 3주차 정리 및 회고
·
F-Lab
[F-Lab 멘토링 할인 코드]커넥터스2385사전 학습자바의 신 1 10장 ~ 18장이력서 작성멘토링 질문다형성이란? 왜 필요한가?상속이 왜 위험한가API란?finalize(), clone()Interface vs Abstract Class 차이try - catch - finally 구문Checked Exception vs Unchecked ExceptionInner class란?과제RFC 6749Inner class에서 GC를 방해하는 상황추가 학습다형성, 컴포지션, DI - 세 개념을 한줄로 잇기멘토링 Q&A이력서 관련 질문회고이번 주 멘토링은 절반은 이력서와 회사 지원 이야기, 절반은 자바 꼬리 질문 위주로 진행됐다.이력서는 4~5번 정도 수정해서 그런지 큰 수정 사항은 거의 없었다. 원티드 중심으..
[Java] 다형성, 컴포지션, DI - 세 개념을 한 줄로 잇기
·
Java
다형성을 학습하다가 Effective Java의 "상속보다는 컴포지션을 사용하라"는 문장이 떠올랐다. 그 과정에서 implements와 컴포지션의 관계가 머릿속에서 명확히 정리되지 않아 개념을 다시 정리해본다.다형성이란다형성(polymorphism)은 같은 메소드 호출이 실제 객체에 따라 다르게 동작하는 성질이다.Payment payment = new KakaoPayment();payment.pay(1000);위 코드에서 변수 타입은 Payment지만, 실제 실행되는 것은 KakaoPayment.pay()다. 즉 다형성의 핵심은부모 타입(인터페이스/상위 클래스)으로 객체를 다룰 수 있고실제 어떤 구현이 실행될지는 런타임에 결정된다는 점이다.왜 필요한가 - 결제 예시다형성이 없는 코드public class..
[F-Lab] 2주차 정리 및 회고
·
F-Lab
[F-Lab 멘토링 할인 코드]커넥터스2385사전 학습자바의 신2 9장까지멘토링 질문enum블로킹, 논블로킹 / 동기, 비동기 4가지 조합 toString() 호출 결과자바 생성자 특징jpa에서 protected 이상의 기본 생성자가 필요한 이유static 사용 시 주의점자바에서 NullPointerException 발생 이유익명 클래스의 변수 캡처자바 패키지과제이력서 작성익명 클래스에 전달한 값은 어떤 복사인가패키지와 네임스페이스패키지 이름으로 금지된 예약어추가 학습enum - 왜 안전한가, private 생성자로 강등되는 이유멘토링 Q&Astatic 변수 저장 위치해시맵 버킷 계산 시 비트 연산 원리회고한 주제를 깊게 파고들다 보니 다른 주제에 할애할 시간이 부족하다고 느낄 때가 있었다.학습량을 골고..
[Java] enum - 왜 안전한가, private 생성자로 강등되는 이유
·
Java
enum이란enum은 상수(변하지 않는 고정된 값)의 집합을 표현하는 열거형 클래스다.상수를 단순히 `public static final int`로 정의하지 않고 enum으로 정의하면, 컴파일러가 여러 안전장치를 자동으로 끼워준다.그 안전장치들이 어떻게 만들어지는지, 왜 enum이 "싱글톤처럼 동작한다"고 불리는지 정리해봤다.enum은 왜 안전한가1. 타입 체크 가능상수를 int나 String으로 관리하면, 메서드 파라미터로 정해진 상수 외의 다른 값이 넘어와도 컴파일러가 막지 못해 런타임에 가서야 터진다.반면 반면 enum은 타입 자체가 정해져 있어 잘못된 값이 넘어오는 순간 컴파일 에러로 막힌다.enum Status { WAITING, PROCESSING, DONE}void process(Sta..
[F-Lab] 1주차 정리 및 회고
·
F-Lab
[F-Lab 멘토링 할인 코드]커넥터스2385사전 학습자바의 신 1 전체멘토링 질문blocking, non-blocking / synchronous, asynchronoussynchronized 란? 어디에 사용하면 좋을까?상태의 두 가지 의미동시성 제어 수단(자바 락, DB 락)a = b, a == b, .equals()자바 키워드 final, transient리터럴 String vs 힙의 new Stringequals() & hashCode()연산자 종류배열 초기화 방식(프리미티브, 참조형)과제equals() 테스트 코드 짜는 법hashCode()가 무엇이고(31의 의미) 어디에서 사용하는지Floating Point 오차 발생 이유추가 학습synchronized 동작 원리 - 모니터 락, CASequ..