전체 글

네, 저 밑바닥에서 왔습니다
※ 본 게시글은 개인적인 경험을 바탕으로 작성한 후기입니다. 문제가 될 소지가 있거나 요청이 있을 경우 즉시 수정 또는 삭제하겠습니다. 시작하기에 앞서 정말 운이 좋게도... 새마을금고중앙회에 IT 분야로 입회하게 되었습니다. 새마을금고중앙회 관련된 합격 후기가 많지 않은 것 같아 이렇게 글을 작성하게 되었는데, 면접 내용 등은 보안적인 이슈로 인해 직접적으로 공개가 어렵다는 점 미리 양해의 말씀을 구합니다. 서류 전형 서류 접수기간은 2026.02.24(화) ~ 2026.03.15(일) 에 진행되었습니다. 2026.03.31(화)오후 6시 에 서류 전형 합격 안내가 왔습니다. 사실 이번 2026 상반기 채용에서 2025 하반기에 비해 굉장히 좋은 서류 합격률을 달성했는데, 해당 기업이 나에게 있어서..
시작하기에 앞서 현재 진행 중인 프로젝트에서 대기열 관련 아키텍처를 설계해야 하는데, 마침 코딩하는기술사라는 유튜브에서 대규모 예매 시스템을 다루는 영상이 올라와서 관련 내용을 바탕으로 학습 내용을 정리했습니다. 프로젝트 상황에 맞춰 다양한 시각으로 아키텍처를 설계해야겠지만, 대규모 대기열 관련 아키텍처를 어떤 식으로 설계해야 할지 감을 잡는데 큰 도움이 되었습니다. 도입부 대용량 트래픽 선착순 예매 시스템에서 크게 고려해야 할 사항으로는 트래픽이 굉장히 많음 (동시에 수 십만 ~ 수 백만)순서가 보장이 되어야 함 (선착순 이니까)초과 예매 방지 (남은 좌석 수를 넘지 않도록)중복 예매 방지(서로 다른 사람이 같은 자리 혹은 시간대를 예매할 수 없도록) 가 있음 예매 관련 DB는 무결성 같은 것들이 잘..
·💻 CS/Git
보통 Git을 이용해 협업을 하다보면 "아까로 돌아가고싶다.." 혹은 "이 기록 없애고 싶다.." 하는 순간이 있었을 것이다.Git에는 이런 상황에 도움을 줄 수 있는 명령어들이 존재한다. 비슷해 보이지만 서로 다른 역할을 하는 네 가지 re- 명령어의 차이점을 알아보자. Git revert란? Git revert 는 과거 커밋을 취소하는 새로운 커밋을 만드는 명령어이다. 동작 방식은 이미 만들어진 특정 버전(Commit)에서 변경된 내용을 반대로 수행하는데, 예를 들어 A 코드를 추가했던 버전을 되돌리고 싶다면, Git이 자동으로 A 코드를 삭제하는 새로운 버전을 하나 더 만들어준다. 기존 Commit을 지우지 않기에 프로젝트의 전체 기록(History)를 건드리지 않고 안전하게 되돌릴 수 있다는 장점..
·💡Language/Java
Java로 Spring Boot 개발을 해봤다면 프로젝트 초기 생성 시에 Maven과 Gradle 두 가지 방법 중 무엇을 선택해야 하는지 의문이 있었을 것이다. 그 궁금증을 해결하기 위해 Maven과 Gradle에 대해 알아보자. Build 란? Java로 열심히 코딩을 하면 .java라는 파일이 만들어진다.하지만 이 파일은 그냥 메모장에 적힌 글씨일 뿐, 컴퓨터가 바로 읽어서 실행할 수는 없다. 빌드(Build)란 우리가 작성하는 소스코드와 이미지, 설정 파일들을 모아서 컴퓨터가 실행할 수 있는 하나의 제품(.jar 또는 .war 파일)으로 만드는 과정을 말한다.=> 정확하게는 Java의 빌드 결과물인 .jar이나 .war 파일은 특정 OS(윈도우, 리눅스 등)에 종속된 파일이 아니라, JVM이 읽는..
·💻 CS/Git
개발을 하다보면 내가 언제 어떤 코드를 수정했는지를 알아야하는 상황도 있고 팀원들과 코드를 공유하고 합쳐야하는 상황 등 여러 고민 사항들이 존재하게된다. 이런 문제를 해결해 주는 도구인 Git에 대해 알아보자 Git이란? Git은 분산 버전 관리 시스템(Distributed Version Control System, DVCS)로 단순히 파일을 저장하는 것을 넘어, 파일의 변경 사항을 시간순으로 기록하고 필요할 때 특정 시점으로 되돌릴 수 있게 해준다. 버전관리시스템 앞에 붙은 '분산'이라는 말처럼 모든 개발자가 전체 히스토리를 로컬에 복사하여 가지기 때문에 중앙 서버에 문제가 생겨도 복구가 쉽고 오프라인 작업이 가능하다는 장점도 있다. Git의 영역 Git은 작업 흐름을 이해하기 쉽게 3개의 영역으로 나..
Linux 환경에서 인프라를 운영하다 보면 서버 장애나 통신 문제를 마주하게 되고, 이 때 가장 먼저 떠올리는게 ping, curl, telent 명령어 입니다. 하지만 이 세 가지 명령어는 단순한 헬스체크 도구가 아니라, 각각 서로 다른 계층과 목적을 가지고 있습니다. Ping (Packet Internet Groper) # 사용 예시$ ping 8.8.8.8# 응답 예시64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=34.2 ms# 64 bytes는 상대 서버가 나에게 보내준 ICMP 응답 패킷의 크기임# icmp_seq는 ICMP 시퀀스 번호로 몇 번째 ping 요청에 대한 응답인지를 나타냄 (패킷 유실 여부 판단 가능)# ttl은 패킷이 네트워크에서 살아 있을 ..
·💡Language/Java
Generics란? Java의 Generics은 클래스나 메서드에서 사용할 데이터 타입을 외부에서 지정할 수 있게 해주는 문법으로 타입을 미리 정하지 않고 나중에 정하는 방식임 이런 Generics는 컴파일 시점에 타입을 미리 확정해서 모든 타입 관련 오류를 검사하기 때문에 타입 안정성을 높여주고 불필요한 캐스팅을 줄여주기에 유용하게 사용됨 => Generics가 없을 때는 Object로 저장을하고 캐스팅을 직접 했지만 Generics가 등장하며 컴파일러가 타입을 미리 확정하고 자동으로 캐스팅을 해줌 Generic Array Creation 에러란? Java Generics에 대한 명확한 개념을 잡지 않고 개발을 하다보면 Cannot create a generic array of T라는 컴파일 에러를 겪..
문제 접근 https://school.programmers.co.kr/learn/courses/15009/lessons/121687 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 난이도가 그렇게 어렵지 않은 구현 문제이다. 방향벡터를 구현하고 로봇의 회전에 따라 어떻게 방향을 지정해줄지 고민하고, 좌표계가 일반적인 배열에서의 구현 문제 처럼 맨 왼쪽 위 위치(인덱스)가 0, 0으로 정해져있는 것이 아니라 인덱스로 일반적인 x, y 좌표계에서 중앙인 0,0 에서 움직이는 것임을 염두해야한다. => 즉, 보통 배열에서 위쪽으로의 이동은 int[y][x]로 생각하고 y를 -1 해주는데 이 문제는 x, y 좌표계 이..
·🔥 Algorithm
문제 접근 https://school.programmers.co.kr/learn/courses/15008/lessons/121685 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 우선 시간 복잡도를 계산해봤을 때 해당 세대의 특정 번째까지 직접 찾아가는 것은 무리가 있고 결국 RR Rr Rr rr 로 부터 파생되는 부분이 눈에 들어와서 패턴을 찾는 방식으로 접근해봤다. 하지만 이를 어떻게 재귀에 적용시킬지를 찾지 못해서 풀이를 본 문제이다. 문제 풀이 위 그림과 같이 최대 16세대 (n 자세히 살펴보면 빨간색 네모칸으로 표시한 부분이 반복적으로 발생하므로 이를 재귀로 풀면 해결할 수 있을 것 같다는..
문제 접근 https://school.programmers.co.kr/learn/courses/15008/lessons/121684 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 최대 학생수가 10명이고 종목수도 최대 10개까지이므로 모든 경우를 탐색한다고하면 첫번 째 종목에서 10명중 1명을 선택하고 두번 째 종목에서 9명중 1명을 선택하고 ... 즉, O(10!)이므로 시간 초과없이 모든 능력치의 합이 최대인 구간을 구할 수 있다. 그래서 바로 완전 탐색으로 문제에 접근하였다. 문제 풀이 위에서 말한대로 각 종목당 현재 고를 수 있는 인원들 각각에 대해 모든 경우를 확인하며 종목들의 모든 인원이 채워졌을 때..
문제 접근 https://school.programmers.co.kr/learn/courses/15008/lessons/121683 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음 봤을 때 굉장히 쉽게 구현이 될 것 같았는데 생각보다 생각할게 조금 있었던 문제였다.List나 Set, Map 등 여러 자료구조들중 선택해서 하나를 사용할 수 있다면 충분히 풀 수 있는 난이도이다. 문제 풀이 input_string의 최대 길이가 2,600이므로 for문을 2번 사용해도 문제가 없을 것으로 생각해서 나이브하게 생각한 풀이를 그대로 구현했다. 우선 input_string에 있는 문자들의 종류를 알아내기 위해 inpu..
문제 접근 https://school.programmers.co.kr/learn/courses/30/lessons/92345 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이길 수 있는 경우 최소의 턴으로 이기는 방향으로 가고 이길 수 없는 경우 최대한 오래 버틸 수 있게 하라는게 이해가 안되서 정말 어려웠던 문제였다. 이런 경우를 미니맥스 알고리즘이라고 한다는데 이런 구체적인 정보없이도 5x5 board판이므로 모든 경우를 탐색해본다는 생각을 갖고 접근한다면 똑같이 풀 수 있다. 문제 풀이 상하좌우로 움직일 수 있고 map을 벗어날 수 없으며 발판이 있는 곳으로만 이동할 수 있다는 내용을 보자마자 가장 먼..
JJunGyo
개발 바닥