본문 바로가기
[2022 OSSCA] 오픈소스 컨트리뷰션 아카데미 발대식 오늘 드디어 2022 오픈소스 컨트리뷰션 아카데미의 첫 오프라인 행사로 발대식이 있었다. 아침 10시에 시작이라 평소보다 부지런히 움직여서 갔다. 무덥고 습한 날씨를 뚫고 도착하니 웰컴 굿즈와 개인 다과가 준비되어 있었다. 웰컴 굿즈에는 여러 프로젝트에서 준비한 스티커와 손풍기, 에코백 등이 있었다. 참고로 우리 Zeppelin팀 스티커는 멘토님이 따로 준비하셨다가 까먹고 못 주셨다. 다음에 받을 수 있기를...ㅋ 우리 Zeppelin팀은 전체 23명의 멘티분들 중 14분이 오프라인으로 참석하셨고, 3분이 온라인으로 참석하셨다. 10팀이 동시에 같이 발대식을 진행하다보니 전체 인원은 어마어마하게 많았다. 첫 일정은 3개월 간 진행될 일정에 대한 간단한 소개였다. 다음은 아이스 브레이킹을 위한 간단한 게임.. 2022. 7. 10.
[2022 OSSCA] 오픈소스 컨트리뷰션 아카데미에 멘티로 참가한다! 평소 개발 공부를 하면서 오픈 소스에 기여해 본인의 코드가 merge 되었다는 글을 종종 봤었다. 처음에는 경력이 몇 년 이상 되는 고급 개발자만 할 수 있는 일이라 생각해 별로 신경쓰지 않았다. 하지만 그 뒤로도 비슷한 글을 보다보니 고급 개발자 뿐만 아니라 아직 업무 경험이 없는 초보 개발자, 아니 개발자가 아닌 사람조차 오픈 소스에 기여할 수 있다는 사실을 알게 되었다. 그러면서 자연스럽게 오픈 소스란 단어가 보이면 나도 모르게 한 번 더 눈길이 가곤 했었다. 초보 개발자로서 오픈 소스에 기여해보고 싶다는 생각은 가지고 있었지만 막상 직접 해보려니 어떤 프로젝트를 골라야 하는지 부터 정하기가 어려웠다. 설령 고른다 하더라도 '전 세계 사람들이 쓰고 있는건데 내가 고칠 부분이 있긴 할까?' 라는 생각.. 2022. 7. 5.
2022 Dev-Matching: 웹 백엔드 개발자(상반기)-2 코딩 테스트 후기 총 자료구조/알고리즘 3문제, SQL 1문제 120분이었다. 데브매칭에서는 문제에 주어진 테스트 케이스 뿐만아니라 다른 많은테스트 케이스 통과 여부까지 알 수 있어서 좋았다. 1번 문제 총 15분 정도 걸렸다. 간단한 구현 문제였다. 문제에서 주어진 조건이 까다롭진 않았지만 이전 조건들까지 고려해야 하고, 범위가 커서 효율적인 코드 흐름이 필요하다고 생각했다. 2번 문제 총 30분 정도 걸렸다. N x M의 숫자판을 일정 규칙으로 채우는 문제였다. 그림으로 봤을 땐 금방 이해되는 규칙이었다. 하지만 막상 코드로 구현하려니 간단하지만은 않았다. 일단은 하드 코딩으로 먼저 작성하고 깔끔하게 코드를 수정할 생각이었다. 중복된 코드도 있었고, 딱 봐도 주어진 조건에만 맞게 작성했다. 제출을 하니 통과는 했지만 .. 2022. 7. 3.
[NAVER] 2022 네이버 기술 직군 신입 채용 : Track 공채 온라인 코딩테스트 후기 총 4문제 120분이었다. 일단 전반적으로 어려웠고, 검색, 외부 IDE 전부 사용할 수 없어서 더 어렵게 느껴졌다. 완벽하게 풀어서 제출한 건 1문제 밖에 없다. 나머지 문제들은 중간까지는 얼추 진행했지만 마무리를 짓지 못했다. 빡센 구현 문제부터 그리디 (시험볼 땐 그리디라고 생각하지 못했다.) 탐색까지 전반적으로 여러 단계를 거쳐서 작성해야 했고, 단계 별로도 고려해야할 게 굉장히 많아서 어려웠다. 중간 중간 계속 맞는 자료구조도 생각해야 하고 해서 결국 완성하지 못했다. 이런 수준의 문제까지 풀려면 지금 하는 거와는 다른 정도의 공부가 필요할 듯 싶다. 많이 연습한 유형도 여러 번 꼬이니까 쉽게 떠오르지 않고, 떠올랐다 하더라도 알맞게 작성하는 것도 쉽지 않았다. 단톡방을 보니 다들 어려웠다고 하.. 2022. 7. 3.
회장뽑기 - 백준 2660 (Java) https://www.acmicpc.net/problem/2660 풀이 1. 회원들 간의 관계를 2차원 배열 그래프로 정리한다. 2. 한 회원마다 다른 회원과 친구가 되는 거리를 각각 구한다. 각 회원의 점수를 정할 때 주의할 점은 어떤 두 회원이 친구사이이면서 동시에 친구의 친구사이이면, 이 두사람은 친구사이라고 본다. 문제의 조건을 보면 한 회원에서 다른 회원까지 도달하는 최단거리를 구해야 한다. 그러므로 bfs 알고리즘을 활용한다. 3. 2를 바탕으로, 한 회원을 기준으로 모든 회원과 친구가 되기 위한 최대 거리를 구한다. 4. 모든 회원들의 3번 값 중 최솟값을 가지는 회원을 찾는다. main() //회원들 간의 관계를 나타내는 그래프 static int[][] graph; public stati.. 2022. 6. 29.
예외 (Exception) Error vs Exception Error는 시스템 레벨에서 비정상적인 상황이 일어났을 때 발생한다. Error가 발생하면 프로그램을 더 이상 실행할 수 없다. 이런 Error는 시스템 레벨에서 발생하기 때문에 개발자가 프로그램 코드로 대처할 수 없다. Exception은 개발자의 코드나 사용자에 의해 발생하는 프로그램 레벨의 오류를 뜻한다. Error와 마찬가지로 Exception이 발생하면 프로그램이 바로 종료되지만, Exception Handling을 해주면 정상적으로 프로그램을 작동할 수 있다. 위 구조도를 보면 Error 클래스와 Exception 클래스는 Throwable 클래스를 확장(상속)하고 있다. Throwable 클래스에 정의된 method들 중 가장 많이 쓰이는 것은 다음과 같다... 2022. 6. 28.
[회고] 두 번째 모의 기술 면접 이번 섹션 마지막에도 저번과 같이 모의 기술 면접 일정이 있었다. 자료구조, DB, 네트워크, 스프링 기본 위 내용에 해당하는 주제 중 내가 고른 주제는 다음과 같다. 1. 웹 브라우저에서 CORS 이슈가 발생하는 원인은 무엇이며, 서버에서 어떻게 해결할 수 있나요? 2. DNS의 정의와 DNS가 필요한 이유에 대해 설명해주세요. 3. Client Side Rendering 과 Server Side Rendering 의 차이점에 대해서 설명해주세요. 네트워크 관련 내용들을 한 번 정리하고 싶기도 했고, 기술 면접에 무조건 나오기 때문에 네트워크 주제들로만 골랐다. 일정은 11시부터 각자 30분씩 해서 1시간이 잡혀있었다. 하지만 페어분이 계속 연락이 되지 않았다. 그래서 혼자라도 할까 고민하다가 그래도 .. 2022. 6. 26.
[회고] 두 달이 지난 백엔드 부트캠프! 지난 달에 부족하다 느낀 점들! 1. 주말을 좀 더 알차게 보내자! - 아직도 부족 결론적으로 말하면 아직 부족하다고 느낀다. 코딩 테스트도 보고, 공부도 하긴 했지만 여전히 뭔가 일주일을 끝맺는 느낌이 부족하다. 주말에 할 것이 있었는데도 마무리하지 않고 다음 주로 미루기도 했고, 코딩 테스트를 핑계로 앞 뒤 시간을 의미없이 보내기도 했다. 2. CS를 추가로 공부하자! - 어느정도 만족 일단, 전에 공부했던 CS(운영체제, 네트워크, 데이터베이스)를 다시 한 번 쭉 공부했다. 운영체제나 네트워크는 큰 흐름과 기본적인 내용은 머릿 속에 어느정도 정리가 됐다. 모든 공부가 그렇지만 깊게 들어가기 시작하면 한도 끝도 없기 때문에 여러 번 반복하면서 조금씩 이해의 깊이를 계속해서 늘려갈 생각이다. 그 외 부.. 2022. 6. 26.
숫자 고르기 - 백준 2668 (Java) https://www.acmicpc.net/problem/2668 풀이 문제 예시를 보면, 사이클1 : 1 -> 3 -> 1 사이클2 : 5 -> 5 인 경우가 정답에 해당 된다. 즉, 만들어지는 사이클에 속하는 숫자들을 출력하면 된다. 예시에서도 보면 알겠지만, 사이클은 재귀 방식으로 탐색할 수 있다. 사이클이 만들어지는지 탐색할 때 중간에 거치는 숫자들을 임시 리스트에 담았다가, 사이클이 만들어지면 임시 리스트에 담긴 값을 정답 리스트에 담는다. 어떤 한 숫자가 사이클에 속하게 되면 다른 사이클에는 속할 일이 없으므로, 사이클을 탐색할 때 정답 리스트에 없는 숫자로만 시작하면 된다. 재귀탐색 시 중단 조건은, 즉, 사이클을 이루는 조건은 탐색 중간값이 재귀탐색 시작점 값이 될 때이다. main() /.. 2022. 6. 24.
@RequestParam vs @ModelAttribute vs @RequestBody 클라이언트로부터 온 요청에 포함된 메시지(정보)를 Spring에서 받기 위해 많이 사용하는 annotation에는 3가지가 있다. @RequestParam @ModelAttribute @RequestBody 요청에 담긴 데이터가 어떤 형식이냐에 따라 사용하는 annotation이 다르다. 요청 데이터가 Query parameter일 때 쿼리 파라미터를 바인딩하기 위한 annotation은 @RequestParam과 @ModelAttribute이다. /path?key1=value1&key2=value2 과 같이 url에 Query String으로 올 때는 물론이고, form 형식일 때에도 (Content-type : x-www-form-urlencoded) 요청 메시지 body에 Query String 형.. 2022. 6. 24.