3. 왜 갔어요?
• 동아리 Slack #feeds 채널에 핵데이 한다고 뜸.
• Slack 좀 씁시다 여러분.
• 학과 워크샵을 갔는데 강연하러 나온 네이버에 막 들어간 선배가
강연 끝에 가보라고 추천을 하심.
• 그래서 일단 신청함 - 딱히 기대 안함
• 참가자로 선발됨(!)
7. 어짜다 보니 Android 앱 담당을...
• 팀원0 - 전 서버 선호... Android 몰라요...
• 팀원1 - 저도 서버... Android 모르고 iOS 는 함.
• 팀원2 - 전 서버, 근데 Android 도 함.
• 나 - Android 쪽에 붙어야겠네...
8. 그래서...
• 팀원0 - 서버
• 팀원1 - 서버 + iOS 판매자용 앱 작업
• 팀원2 - Android 일반 사용자용 앱 작업
• 나 - Android 일반 사용자용 앱 작업
9. 현실.
• 팀원0 - 서버
• 팀원1 - 서버 하시다가 Android 앱 판매자쪽으로...
• 팀원2 - Android 사용자 부분 작업
• 나 - Android 사용자 부분 작업
10. 사전작업 - 기획
• 판매자
• 웹으로 구현 : 구매 물품 목록에 대한 QR 코드 보여주기
• 이용자
• 앱으로 구현 : 판매자의 QR 스캔해서 결제
11. 사전작업 - 코딩
• Android 쪽만 미리 작업 - UI 만 미리 부분적으로 작업
• (비어있는) 메인화면
• QR 코드 스캔 화면 - 걍 라이브러리 가져다 씀
• 스캔 결과 처리
• 결제 완료 화면
12.
13.
14.
15. 첫날
• 네이버 그린팩토리로 모임.
• 행사 일정 안내, 버스 탑승 안내
• 버스 타고 춘천에 위치한 네이버 커넥트원 연수원으로 이동
• 작업 시작
16. 일정
자~ 버스 타실꺼구요~ 내리셔서 짐 풀으시고, 개발하다가, 먹고, 개
발하다가, 밥먹고, 개발하다가, 자고, 개발하다가, 먹고, 개발하다
가, 먹고, 개발하다가.........
자 일정 다른건 보실 필요 없고, 밥 시간만 잘 기억하시면 됩니다.
17.
18. 첫날 작업(내 작업 위주로 설명하자면.)
• 간식 사수 (멘토 : 여러분! 간식이 털리고 있습니다. 사수 하러 갑시다!)
• 앱 화면 세부 기획 + 작업
• 결제 기능 - 결제 인증(비밀번호 입력 화면) 추가
• 구매내역 - 구매 기록, 기록별 상세, 충전/환불
• 로그인/회원가입 - 이건 다른분이 작업
• 메인화면 작업 - 다같이 작업
• 저녁식사, 커넥트원 구경, 배드민턴 치기(본인 포함 팀원 모두가 몸치)
19.
20.
21.
22.
23. 둘쨋날(마지막날)
• UI 작업 마무리
• 앱과 서버 연동 작업 + 추가 UI 작업(충전 화면)
• QR코드 스캔 처리 구현 작업
• QR 스캐너 라이브러리 교체 작업
• 서버 하시던 분 한명 -> 앱 판매자 기능 구현 으로 넘어오심
• 2시쯤 마무리. 각자 작업한 부분에 대해 발표.
35. khttp - HTTP without the bullshit
import khttp.get
fun main(args: Array<out String>) {
// Get our IP
println(get("http://httpbin.org/ip").jsonObject.getString("origin"))
// Get our IP in a simpler way
println(get("http://icanhazip.com").text)
}
36. 참가 결과
• 우수참가자 선정
• 채용담당자 : 님 네이버
로 면접보러 오세요.
• 본인 : ??????
40. 면접
• 총 2시간(인데 시간 초과해서 실제로는 2시간 반)
• 면접관 두분이 순서대로 한분씩만 들어와서 한시간씩 진행
• 핵데이때 한 것, 제출한 서류, 지원한 직무 관련 하여 질문
• 지원한 직무에 대해 굉장히 깊게 질문함.
• 면접관 한분마다 손코딩 3~4문제 정도
41. 대충 기억나는 질문 나열
• Final 키워드에 대한 질문
• Object 클래스에 구현된 메소드 들을 설명해 보세요.
• StringBuilder, StringBuffer 의 차이는?
• 싱글톤 패턴 알아요? 디자인 패턴 아는거 있어요?
• 멀티스레딩 관련 질문.
42. 대충 기억나는 질문 나열
• Android BroadcastReceiver 를 등록하는 방법은?
• 답 : 동적으로 등록 또는 메니페스트에 명시하여 등록
• 둘의 차이는? 메니페스트에 등록하면 편한데 왜 메소드를 호출해서 동적으로 등록할까요?
• 인텐트 필터가 뭐하는 건가요?
• Android 에 있는 기본 컴포넌트 유형에 대해서 설명해 보세요.
• 서비스를 시작하는 방법은? 답 : 그냥 startService() 또는 Activity 에 bindService().
• 서비스 바인드를 왜 할까요? 액티비티에 붙어서 하는거면 굳이 왜하죠?
• View 가 어떻게 그려지나요? ViewGroup 은 어때요?
43. 손코딩
• 문자열 뒤집기 - StringBuilder 를 사용하자 : 왜 StringBuilder 를 사용했어요?
• 배열에서 중복되는 것만 출력하기 - HashMap Key 로 Integer 를 사용하자 : int 로는 안되나요?
• 수열의 n 번째 항 구하는 함수 만들기
• 배열에 있는 항목 정렬하기
• 정렬 공부를 안해서(...) 그나마 아는 버블 정렬로 작성 하자 : 이거 시간 복잡도가 어떻게 될까요?
• Android 레퍼런스 문서 인쇄한 것과 Android View Tree 그림을 던져주며. - View Tree 의 최대 깊
이를 구하는 함수 만들기.
• 몇게 더 있던 거 같은데 기억이 안남...
• 면접관 : 음... 저 코드가 제대로 작동할까요? (휴대전화 카메라로 보드에 쓴 코드를 연속촬영하며)