해당 Repository는 Coding Interview University에 감명받아 시작하게 되었습니다.
개인적인 것들을 정리하겠지만, 다른 사람들도 볼 수 있도록 한국인 대상으로 작성해보려고 합니다.
시발(始發): [명사] 1. 차 따위가 맨 처음 떠남. 2. 일이 처음으로 시작됨. 3. 증세가 처음 생김.
포기만 안 하고 계속 하면, 언젠간 이룰 수 있다!
준비중
문제풀이 사이트
국내 가장 인기 있는 사이트.
11월 11일 빼빼로 이벤트함.
Code.plus에서 온라인 강의 들을 수 있음(3만원~10만원 꼴. 할인, 패키지도 있음. 내용 괜찮음.)
각 강의 마다 맛보기 강의 들을 수 있음.
유투브 채널있음(참고 자료 확인)
SW Test 볼 수 있음(A, B, C형. 무료.)
무료 강의 있음.
프로그래머스 - https://programmers.co.kr
카카오톡 코테는 여기서 봄.
예전 카카오톡 코테를 풀어볼 수 있음. 다른 문제도 있음.
읽기 자료/참고 자료 추천:
기본 자바(PS와 큰 관련없는 Java 문제)
- 접근제어자 접근범위
- 인터페이스, 추상클래스 차이
- 예외처리
- 생성자의 종류
기본 자바 문제(Collections 위주)
기본 자료구조 문제
기본 알고리즘 문제
- 그리디 알고리즘(욕심쟁이 기법, Greedy Algorithm)이란?
- 분할 정복(Divide and Conquer)이란?
- 완전 탐색(Brute Force)이란?
- 백트래킹(Backtracking)이란?
- 인접 리스트와 인접 배열이란? 입력을 어떻게 받아 어떻게 저장하는가?
- BFS란?
- DFS란?
- 스택은 언제 쓰이는가? DFS? BFS?
- 큐는 언제 쓰이는가? DFS? BFS?
- 맵 안에서 넓이를 구할 때 무엇을 사용하는가?
- 맵 안에서 영역의 개수를 구할 때 무엇을 사용하는가?
- 비트마스크란?
- 전위, 중위, 후위는 어떤 그래프 탐색에서 어떤 부분을 달리하여 얻을 수 있는가?
- 조합은 무엇이고 순열은 무엇인가?
- |와 ||, &와 &&의 차이는?
- 1, 4, 16, ...처럼 4의 거듭제곱을 계산할 때 빠른 방법은?
- GCD와 LCM는 무엇이며 어떻게 구하는가?
- 등차수열과 등비수열에서 수열의 합은 어떻게 구하는가?
- 알파벳 갯수는 총 몇 개이며, ASCII코드 중 a와 z 그리고 A와 Z를 숫자로 나타내면 얼마일까?
- String을 더할 때 빠르게 하는 방법은 무엇일까?
- 입력과 출력이 많을 경우 입출력 방법 중 무엇을 사용하면 빠를까?
- 10진수의 숫자를 Binary인 String으로 표현하려면 어떻게 해야할까?
- String을 index에 따라 어떻게 쪼갤 수 있을까?
- String을 규칙에 따라(쉼표나 공백 등)으로 나눠 배열에 담을 수 있을까?
- DP에서 쓰이는 것은 Memoryzation OR Memoization(r없음)? 왜 그리고 어떻게 사용하는 가?
- Bottom-up은 뭐고 Top-down은 뭘까? 어느 알고리즘에서 사용되는 말인가? 어떻게 구현하는 가?
- 우선순위 큐(PQ, Priority Queue)는 어떤 애고 어떤 유형에서 유용하게 쓰이는가?
- C++의 pair는 어떻게 자바로 구현하는가?
안드로이드 문제
- 4대 컴포넌트에 대해 설명하시오
- Thread 간 통신 방법
- Looper란?
- 커스텀뷰란? 커스텀뷰 만드는 방법
- 생명 주기에 대해 설명하시오.
- RecyclerView란? 사용 방법은?
- Context란? 어떤 종류가 있는가?
- AsyncTask 사용법
- Thread와 Handler 차이
- Thread간 통신방법에 대해 설명하시오
- Handler에 대해 설명하시오
- Serializable와 Parcelable 차이
- 데이터 저장 방식 5가지 비교 - SQLite, Shared Preference, File, Property, Network
- 명시적 인텐트 VS 암시적 인텐트
- ANR이란?
- Activity와 Fragment의 차이
- Activity와 Fragment의 생명주기에 대해 설명하시오.
- Data Binding이란?
- timeout 핸들링 방법
- iOS와 차이점
- MVC, MVP, MVVM 패턴에 대해 설명, 각 아키텍쳐에 대해 패키지 구성을 어떻게 하는가?
- 9-Patch란?
- Job Scheduler란?
- Work Manager란?
- AAC의 종류와 각각에 대해 설명하시오
- Shared Preference 보안 이슈에 대해 설명 및 대처 방법
- Serializa란 무엇인가? 종류는?
- 백그라운드에서 UI 업데이트 하는 방법
- ANR이란?
- Content Provider와 Content Resolver 차이
- Manifest에 대해 설명
C++에 대한 이해(사용방법의 차이)
나만의 TIP?(자습, 문제풀이, 오프스터디 등)
스터디 하실분!?
코테/면접 후기(가나다ABC순)
우아한형제
MIT License
Copyright (c) 2019 Chanjung Kim
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.