가끔 프로그래밍 관련 글이 링크되어 이 사이트를 알고 있었는데 이 댓글들 보니 앞으로 무조건 거르는 사이트가 되어야 할 것 같네요. 갑갑해서 한마디 쓰려고 가입했습니다
일단 피보나치 수열 같은 쉬운걸 왜 물어보는가?
-> 전 직장이 쿠팡 카카오 개발자였으면 물어봤을까요?
피보나치 뭐 그런거 외우는거 아니냐? 예전에 신입 때 외웠는데 지금은 기억 안 나는데?
-> 피보나치를 왜 외우죠? " 57142 + 32112 = ? " 문제 정답 외우고 푸나요?
프로그래밍 문제에 웬 수학?
-> 단순 파라미터나 바꾸는 코더가 아닌 프로그래머 경력자라면 나올 질문 수준이 아닌데요?
프로그래머가 수학 수준이 낮을 수가 있나요? 당장에 학부 커리큘럼만 봐도 대부분 대학이 기본적으로 공업 수학 선형대수 이산수학 대수학 정수론 정도는 배울 텐데요?
난 중고등학교 때 수학 잘했는데?
-> 근데 왜 지금은 못 하죠? 실무에서 안 하니까요? 실무에서 도대체 어떤 일을 하고 경력을 쌓고 경력직이라고 이야기하고 있으신 거죠?
단순히 UI 구현만 한다고 쳐도 이미지를 회전하면 이미지 회전에 따른 계산 정도는 할 텐데 말이죠
재귀함수로 구현하면 가산점을 준다?
-> 재귀함수가 어려운가요? 재귀함수에서 중요한건 스택오버플로우를 어떻게 처리하는지 잘 알아야지,
그리고 재귀함수는 그냥 루프문하고 같은데 왜 재귀함수를 쓰는지 알아야 가산점을 주는거겠죠
너무 수준 낮은 말이 많아서 위의 것이 길어졌는데
면접에서 피보나치를 물어본 이유와 관련된 건 아래부터
일단 알고리즘이라고 퉁쳐서 말하는데 보통은 문제해결기법을 보기 위함입니다.
일단 저는 응용프로그램/윈도우 데스크탑/모바일앱/서버 관련만 해서 웹관련은 모르니까 그쪽으로 예시를 들어보면
오더- "요즘 모바일이 대세라는데 대세에 따라볼까?"라고 하면
위에 자칭 개발 n년차들은 짬으로 일단 걍 시작할텐데
오더(문제)의 문제 정의부터 시작해야죠. 안 하고 시작한다면 처참한 수준의 경력자일 거고
문제 정의의 개념을 몰라도 일단 문제 정의하고 시작한다면 보통 짬바라고 하죠
온라인 저지에서 나오는 문제는 일단 문제 정의가 된 상태인 거고
문제 정의-"모바일과 데스크탑에서 편하게 볼 수 있게 사이트를 구성하자, width가 100이하면 False, 100초과면 True를 출력"
문제정의가 끝났으면 문제를 "이해"하고 해결방법을 생각해서 그걸 "구현" 하는 거죠
그럼 다시 피보나치? 그게 어렵나요. 그냥 앞의 두 숫자를 더한 다음 숫자를 출력하는 게?
단지 문제를 "이해" 할 수 있냐의 문제고 문제가 쉬운 건 이력서상 "구현"능력이 떨어져 보이니 쉬운걸 낸거겠죠
면접 때 손코딩을 하는 것도 아니고 그냥 칠판 같은데 슈도코드든 그냥 로직만 설명해도 될 텐데 물론 문제가 너무 쉬워서 슈도코드도 필요 없지만
제가 학부생 때도 실제로 컴공 학부 2학년 처음 온라인저지하는 애들 데려다 놓고 아무 설명 없이 하노이탑 풀라고 해도 20분이면 풀어요. 근데 피보나치면 더 빨리 풀겠죠
물론 보통 빨리 푼다면 재귀함수, 반복문 수준인 거고, 좀 더 조건을 추가하면 시간은 걸리더라도 보통은 메모이제이션 수준으로 풀 거고 그 정도면 충분합니다
https://leetcode.com/problems/fibonacci-number/solution/
행렬을 사용한다면 수학과가 아니라면 그 정도가 되어야 "외운" 수준이죠
그리고 카카오만 해도 17년도부터 코딩테스트 직접 문제 만들어서 내고있어요
https://tech.kakao.com/2021/01/25/2021-kakao-recruitment-round-1/
"신입" 문제 수준입니다 제한시간이 5시간동안 저정도를 푸는거에요
외우는게 아니고, 심지어 7문제 중 맨 위에 1번문제 보다 쉬운게 피보나치 고요
쓰다가 수준이 처참해서 그거에 일일이 답을 쓰다가 현타가와서 이만 쓰고 앞으로 이 사이트 올 일 없을 듯하네요
이솝우화에 여우와 포도 이야기가 생각나네요
"난 N년차 개발자인데 저런 면접 문제라고? 저긴 분명 수준 낮은 회사야! 눈길도 안 줘야지!"