IT 35

[면접-Java] POJO 객체 비교

옛날에 HashMap 에 대해 글을 썼기 때문에 이번 글과 겹치는 부분이 많다. 하지만 POJO 객체 비교에 대한 글을 쓴 적은 없어서 비슷하지만 살짝 다르다. 왜 equals, hashCode를 오버라이딩해야하는지 동일성, 동등성 기준으로 쓰려한다.또한 오픈소스 스터디를 하면서 발표 자료를 정리해둔 게 있기 때문에 그거 기반으로 .. ㅎㅎ 1. 개요 먼저 POJO란?Plain Old Java Object의 줄임말이다. 특별한 상속이나 프레임워크 없이 순수한 자바 객체이다. Object 클래스란? 자바에서 모든 클래스의 최상위 클래스다형적 참조와 메서드 오버라이딩을 지원 → 특정 클래스에 의존하지 않고 코드 작성 가능하다. 즉, OCP 원칙을 준수할 수 있다. equals() 메서드란? 객체의 동등성 비..

[면접-oop] 객체지향 SOLID 원칙

객체지향 개발론 수업 때 많이 봤지만, 오랜만에 다시 설명하라하면 못 하겠는..그런 개념..면접 때 아주 중요하다고 하니 정리하려한다. 1. 개요객체지향 하면 따라오는 필수 개념이다. 이걸 왜 지킬까? 왜 알아야 할까? 결국 개발하다보면 밥먹듯 등장하는 그 단어, "유지보수성"과 "확장성" 때문이다.또한 실무에서 유지보수성을 판단할 때는 세 개의 요소를 고려한다고 한다. "코드 변경의 영향 범위", "의존성", "확장성". 확장성이 사실 제일 중요하다. 5가지가 있다.- 단일 책임 원칙(SRP)- 개방 폐쇄 원칙(OCP)- 리스코프 치환 원칙(LSP)- 인터페이스 분리 법칙(ISP)- 의존성 역전 원칙(DIP) 개념은 자바/스프링 개발자를 위한 실용주의 프로그래밍 책을 참고했다.다른 서적들에 비해 비교적..

[면접-os] 디스크 I/O가 높으면 좋지 않은 이유?

흔히 개발 관련 유튜브, 자소서, 면접 리스트 등을 보면 디스크 I/O 얘기가 많이 나온다.그래서 그게 뭔지, 뭐가 문제인지 간단히 정리하려한다. 1. 개요 & 문제디스크 I/O는 말 그대로 SSD나 HDD 같은 디스크에서 데이터를 읽고 쓰는 작업이다. 즉, 메모리 캐시로 해결이 안 돼서 실제 디스크 접근이 발생한다는 뜻이다.보통 우리가 쓰는 컴퓨터는 솔직히 이젠 너무 빠르기 때문에 생각 없이 쓰곤 한다. 몇기가 짜리 영화도 이젠 솔직히 느리다고 안 느껴진다.하지만 서버 환경에서는 디스크 속도가 전체 성능을 저하시키는 병목이 될 수 있다.특히 클라우드 환경에서 EBS와 같은 블록 스토리지 종류(SSD/HDD, IOPS 성능 등)를 선택할 수 있는데, 낮은 성능 스토리지를 사용하면 병목이 아주 쉽게 발생할..

[면접-네트워크] HTTP 버전(feat. 1.1 vs 2.0)

HTTP 버전에 대해 작성하려한다.자세하게 질문 들어오면 대답을 제대로 못 할 것 같기 때문이다.네트워크도 깊게 파자면 끝도 없기 때문에, 글은 적당히... ㅎㅎ1. 개요우선, HTTP란?클라이언트와 서버 간 통신을 하기 위한 프로토콜 또한 HTTP 0.9 버전 부터 2.0 까지는 모두 TCP를 사용한다.3.0은 구글에서 개발한 QUIC로서 TCP 대신 UDP 프로토콜을 사용한다. 1.x 버전이라고 해서 다양한 버전이 있을 것 같지만/0.9 → /1.0 → /1.1 → /2.0 → /3.0이 뿐이다. 각 차이점과 변화만 제대로 알면 될 것 같다.2. 버전 별 차이1) 0.9 버전요청과 메서드가 매우 제한적이었다. 제한적이다 못해 GET 메서드만 지원됐다.One-line 프로토콜이라고도 불리며, 헤더와 상..

[면접-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