전체 글 46

[면접-java] GC 원리와 종류

아는 형이 GC 꿰뚫고 있길래 나도 그러고 싶어서 정리하려한다.요즘은 뭐.. 너무 잘 돼있다고 하긴 하지만, 모르는 것보단 당연히 아는 게 낫고, 튜닝할 일이 생길 수도 있으니 정리가 필요할 것 같다.근데 하다보니 너무 방대하고, 완벽히 정리가 안 돼서 틀린 게 있을 수도 있다. 1. 들어가기 전GC를 정리하기에 앞서, JVM을 다시 봐야한다. 정리한지 한 달 정도 지난 시점, 역시 사람은 망각의 동물이다. 많이 까먹었다. 정리해둔 걸 다시 봐야겠다.하지만 JVM에 대해 쓸 건 아니니, 구조는 간단히 아래 사진 + a만 살피고, 바로 GC에 대해 작성하려한다. 우선 JVM은 자바 바이트코드를 실행하는 Class Loader. Runtime Data Access, Execution Engine 으로 ..

[면접-네트워크] HTTP 응답 코드에 대해

'면접관분들이 이런걸 왜 물어보시지?' 싶지만, 생각해보면 한 번 이상은 꼭 고민해야할 주제인 것 같아서 정리하려한다!개발하다보면 맨날 쓰던 코드만 쓰고, '아 이거 4XX 중에 뭐 쓰지?' 했던 경험도 있어서 나름 중요한 것 같다. 자주 쓰거나 헷갈리는 응답 코드만 정리해보잡.그리고 엄청 중요한 건 아니지만, 난 200과 201을 꼭 구분한다. 습관이 된 것 같다. 1. 응답 코드 전체 & 개요이렇게 많을 줄은 몰랐다 ㅋㅋㅋ.... 당연히 다 안 쓰이지만, 먹던 코드만 먹다보니 이렇게 많을 줄은 몰랐다.그리고 여담으로 418 코드는 만우절 때 만들어진 "I'm a teapot" 이라고 한다 ㅋㅋ 1xx ~ 5xx 번대 영역별로 정리하자면 아래와 같다.- 1xx 번대: 클라이언트로부터 요청을 받았고, 아..

[백준] 불!

https://www.acmicpc.net/problem/4179 사고 흐름1. 그냥 BFS긴 하네2. 근데 불이 도달하기 전에 나가야함. 그러면 불이랑 지훈이 나가는 시점이 겹치면 안 됨3. 불부터 q에 넣으면 될 것 같은데, 못 나가는 상황인지 판단하는 함수도 필요할 듯4. 불부터 넣으니까 말이 안 되네. 지훈이부터 움직여야겠다.5. 아 불은 여러개 있을 수가 있구나6. 11% -> 43% 까지 성공했는데, 뭐가 문젤라나? 종료 조건이 잘못됐나7. 아 fires boolean 배열 다 넣어줘야되구나. 그래도 안 되네. 조건 다 맞는데 뭐지. 이래서 정답률 21%였나8. 아 지훈을 무조건 먼저 넣어줘야하는데, 저렇게하면 또 불이랑 섞여들어가구나9. 8~90%에서 또 틀렸습니다 뜨네. 이젠 진짜 모르겟..

IT/알고리즘 2025.08.29

[백준] 고층건물

https://www.acmicpc.net/problem/1027 코테에 대한 자신감이 또 한 번 줄었다. 사고 흐름1. 두 지붕을 잇는 선분?2. 아 기울기에 걸리면 안 된다 이거네3. 그럼 특정 건물 기준 양방향 체크해야되는거고..4. '고층 빌딩 A에서 다른 고층 빌딩 B가 볼 수 있는 빌딩이 되려면, 두 지붕을 잇는 선분이 A와 B를 제외한 다른 고층 빌딩을 지나거나 접하지 않아야 한다.' 이게 뭔 소리지5. '고층 빌딩 A에서 다른 고층 빌딩 B가 볼 수 있는 빌딩' 이게 뭔 소린데6. 아니 그러면 '5 5 5 5'는 왜 0이 아니라 2야????????? 그냥 양 옆에 있어서 그런7. 데이터는 특정 값을 기준으로 왼쪽은 기울기가 커지고, 오른쪽은 기울기가 작아짐8. 4 6 1 2 7 ... 이런..

IT/알고리즘 2025.08.28

[백준] 토마토

https://www.acmicpc.net/problem/7569 최근에 BFS한테 많이 데여서 BFS를 열심히 풀고있다... 토마토도 쉬워보였는데 풀다보니 너무 길어졌다.실제로 어려운 건 아닌데, 배열 인덱싱 처리 실수해서 30분 날렸다. 죽고싶다. 사고 흐름1. 그냥 진짜 BFS 그자체네2. 최소 며칠이 걸리는지3. 토마토가 처음부터 다 익어있으면 0, 다 익지 못하는 배치면 -14. 모두 -1일 수가 있나? ㅋㅋ5. 아 3차원 개열받네6. 왜 입력이 안 되지?? 아깐 됐는데 회고풀다보니 코드가 너무 더러웠다. 최적화도 안 됐고, 쓸데없는 변수들도 많았다. BFS 풀고 이렇게 자괴감?이 든 건 오랜만이다.그리고 프로그래머스는 return으로 깔끔히 끝낼 수 있는데, 백준은 출력해야돼서 괜히 더 더럽게..

IT/알고리즘 2025.08.26

[면접-네트워크] TCP vs UDP

기본이지만 단골 문제.. 옛날에 정리한거 핵심만 다시 요약하려한다.이석복 교수님 네트워크 강의를 참고했다. TCP와 UDP 서비스는 Transport Layer에서 동작하며, 실제 패킷이 어떤 경로로 라우팅되는지는 하위 Network Layer에 맡긴다. 따라서 Transport Layer에선 Network Layer 내부의 라우터가 어떻게 연결돼있는진 관심 없다.또한 OSI 7계층에서 Application Layer(7계층)는 사용자 애플리케이션이 동작하는 영역이고, Transport Layer 이하(4계층)는 주로 OS 커널에 구현되어 있다. Application Layer에서 만들어진 데이터 단위를 메시지라고 하며, Transport Layer으로 전달되면 메시지가 segment 라는 전송 단위로..

[면접-DB] RDB의 인덱스가 왜 빠를까?

이 개념은 B+Tree에서 나오는 것이기 때문에, B+Tree 개념을 먼저 정리해야 이 부분이 더 와닿을 것 같다.그치만 방금 RDB 인덱스에 대해 공부했으니 왜 빠른지 빠르게 쓰고 넘어가면 좋을 것 같다.내용이 그리 길지도 않을 것 같아서..! RDB 인덱스는 B+Tree 구조로 균형 있게 저장돼있다. 그래서 루트에서 리프까지 최소한으로 데이터를 찾아낼 수 있다. 즉, 디스크를 덜 탄단다는 말이다.또한 리프 노드끼리 연결되어 있기 때문에 범위 조건 검색과 정렬도 효율적이고, 디스크 블록 단위로 데이터를 읽기 때문에 디스크 I/O를 최소화시킬 수 있다.즉, full table scan 없이 필요한 데이터 위치까지 빠르게 접근할 수 있기에 조회가 빠르다. 사실 면접 때 이 질문이 나온다면 대답은 위처럼..

[면접-DB] RDB의 인덱스에 대해

난 아직 아는게 많이 없지만, 그 중에서도 DB 심화 질문이 나오면 진짜 아무 대답도 못 할 것 같다... ㅋㅋ 1. 인덱스란..흔히 책의 목차라고 한다. 목차가 없으면 해당 내용(즉, 데이터)을 찾기 힘들듯이 목차(인덱스)를 통해 빠르게 데이터를 찾기 위함이라고 보면 될 것 같다.컬럼에 인덱스를 걸어서 빠르게 찾기 위함이다. 또한 빠르게 sort 또는 grouping 하기 위해서도 사용된다. 이렇게 하지 않으면 테이블 전체를 스캔(full scan 또는 table scan)해야 하므로 시간 복잡도는 O(N)이 걸린다. 규모가 커질 수록 느려지는 것이다. 특정 컬럼에 인덱스를 걸어두면 B-tree 기반으로 O(logN)에 처리할 수도 있다. 그리고 대부분 RDBMS에서는 PK 생성할 때 인덱스도 같이 ..

[면접-DB] 정규화 vs 비정규화

기본이지만 정확히 설명이 안 된다.심지어 DB 수업을 들은지 6년..? 돼서 정리가 필요하다.코딩애플님 동영상과 우테톡을 봤다. 1. 정규화 개념1. 제 1 정규화한 칸엔 하나의 데이터만 보관제 1정규형 테이블을 만족한다고 한다. 2. 제 2 정규화테이블 주제와 관련없는 컬럼을 다른 테이블로 빼는 작업즉, 제 1정규형 테이블에서 완전 함수 종속을 만족하도록 테이블 분해하는 것(말이 어렵다 ㅋㅋ)제 2정규화를 만족하는 테이블을 제 2정규형 테이블이라고 한다.단점은 조회시, 한 개의 테이블에서 모든 데이터를 볼 수 없고, 다른 테이블을 참고해야 한다는 것이다.partial dependency를 제거한 테이블이라고 한다.두 개 이상의 컬럼을 합치면 primary key 역할을 하는게 있는데, 이 컬럼들을 co..

[면접-네트워크] REST API란..

솔직히 너무 익숙하게 써서 정확히 뭔지 설명하라고하면 설명을 못하겠다.특히나 당황하면 이렇게 대답할 것 같다... "그... 그냥 API 짤 때 쓰는거요.." ㅋ.ㅋ;; 뭐 길진 않을 것 같다. 1. REST 란?"자원(Resources)"가 핵심이다!풀어쓰면 "Representational State Transfer"이며, '자원'을 어떻게 구조화(명시)할지에 대한 규칙을 말한다. 2. 자원이란?서버가 관리하는 모든 것을 의미하며, URI(Uniform Resouurce Idnetifier)를 통해 고유하게 식별(명시)한다! 3. 그럼 REST API란?쉽게 REST 규칙을 따른 API라고 보면 되고, 서버와 클라이언트가 통신하는 인터페이스를 REST 아키텍처 스타일로 구현한 것이라고 보면 된다. 3...