참고URL : http://hsp1116.tistory.com/33


대학시절 알고리즘 시간에 배우는 아주 기본적인 정렬방법들인데,,

위 URL 블로거분이 알고리즘 코드와 설명이 자세히 포스팅해두셨다.

버블정렬은 은유적인 네이밍덕에 어떤 알고리즘인지 금방 연상이 되는데

선택, 삽입정렬은 헷갈린다..

이번 기회에 제대로 머리에 기억해야지..


결론적으로 이 세가지 알고리즘은 일반적으로 시간복잡도 O(n^2)을 따르지만,(인덱스를 하나하나 접근하여 비교하므로)

삽입정렬 최선의 경우 미리 정렬된 상태일 때 O(n)에 해당되는 복잡도를 가지고 있다는 것이고,

버블정렬의 경우 별도의 스위치 장치를 해두면 미리 정렬되어 있을 경우 O(n)만큼의 시간복잡도를 가지게 할 수 있다.

'Develop Issue > Algorithm' 카테고리의 다른 글

내리막 길 / DFS 깊이우선탐색  (0) 2024.05.18
BFS (Breadth-First Search) 너비우선탐색  (1) 2024.03.26
일반적으로 카카오는 경력자들만 뽑는 것으로 알려져 있는데,

간혹 팀마다 신입 인력이 필요할 때 주니어 개발자를 뽑나봅니다 ㅎㅎ, 저는 비록 채용이 안되었지만 뜻깊은 경험이 되었고, 다른 분들에게도 도움이 되고자 이렇게 후기로 남겨 봅니다!


----------------------------------------------------------------------------------------

주니어 개발자 채용이 있어서 지원해 보았는데 인터뷰 기회가 생겨서 다녀왔다.

팀에서 급하게 인력이 필요한 상황인지 서류를 패스하자마자 곧바로 인터뷰 일정조율 연락이 왔고, 회사에 맞춰서 일정을 잡아도 상관 없다고하니 바로 다음날로 잡혔다 -.-ㅋㅋㅋ (신입공채를 쓰는 사람들에게는 다소 당혹스러울수 있는 ㅋㅋ)

어쨌든, 판교 오피스로 갔는데, 회사 내부는 굉장히 깔끔하고 역시 카카오라는 생각이 나올 정도로 인테리어가 좋았다

인터뷰 예정시간이 4시였는데 바로 4시가 되자마자 직원의 안내를 받으며 면접실로 들어갔다.

내가 두번째로 놀란 점은, 일반적인 면접실 구도가 아니었다. "한줄로 주르륵 앉아있는 면접관과 마주보고 있는 나"가 아닌

면접관분들과 내가 테이블에 원처럼 빙~ 둘러 앉아서 인터뷰를 진행했다. (왠지 한결 편안한 기분 ㅋㅋㅋㅋ)

분위기는 상당히 젠틀했다, 하지만 진짜 나의 개발 지식의 바닥까지 들여다 보려는 기술적인 질문이 많이 들어왔다.

아무래도 카카오에서 요구하는 주니어 개발자란,, 내가 생각한 주니어 개발자와 조금 다른 것 같다는 기분이 들었다.

나는 주니어 개발자란, 학부 수준에서 배우는 자료구조, 알고리즘 등을 기반으로 아직 특정 컴퓨팅 분야에 얽매이지 않은, 어떤 분야의 전문가로 성장 할 수 있는 잠재력을 가진 인력 "정도"로 생각 했으나

카카오 측은 보다 "전문성"을 가지고있으며, 더욱 빠르게 성장 할 수 있는 사람을 찾는 듯 하였다. 하물며 카카오 인데,,,ㅠㅠ

이를테면 garbage collection에 대한 질문만 해도 그러하다..


Q : GC가 무엇인가요?

A : 가비지컬렉터는 더 이상 사용하지 않는 자원을 찾아서 다시 활용 할 수 있도록 하는 시스템입니다.

Q : 어떻게 동작하나요?

A : 특정 메모리 자원이 계속 사용 될 자원인지, 앞으로 사용되지 않을 자원인지에 대해서는 예측하기가 어렵습니다. 때문에 GC는 보수적인 방법을 사용하는 것으로 알고있는데, 향후 어떤 곳에서도 참조 할 수 없는 메모리 자원을 더이상 완벽히 사용 할 수 없는 경우로 판단하는 것으로 알고 있습니다.

Q : 보수적이라는 말이 포괄적인데 보다 구체적으로 설명해주실 수 있나요?

Q : 정확히 메모리의 어느 부분을 찾는 건가요?


사실,, 마지막 두개 질문에 대해서는 시원한 답을 잘하지 못했다 ㅠㅠ... 나는 garbage collection에 대해 이렇게 깊고 진지하게 고민한 적이 없었던 것 같다... -_-;;

이 밖에도 내가 썼던 논문, 프로젝트에 대한 질문도 많이 들어왔었다. 경험 자체에 대한 설명은 열심히 했으나, 기술적인 세부질문에 대해서는 명확히 답변하기가 힘들었다. 인터뷰 전에 나의 기록들과 기술적인 사항에 대해 꼼꼼하게 다시 들여다 보는 세심함도 필요 할 것 같다 ㅎㅎ

어떤 프로젝트에 대해 관련 서류를 보여줄 것을 요구하시길래,, 집으로 돌아와 메일로 보냈는데, 아쉽지만 탈락 통보가 될 것이라는 이야기를 회신으로 듣게 되었다.

끝으로,, 카카오에서 주니어 개발자란, 어떤 분야 하나라도 깊게 파헤쳐서 잘 알고 있고, 자신의 기반 지식으로 고도화를 지향 할 수 있는 인재를 원하고 있었다.

정말 마음만 열심히 한다고 외치는 사람이 아니라, 실제로 증명해 보일 수 있는 사람이어야 한다는 인상이 깊게 남아있다.

카카오 인터뷰를 통해서 나 스스로를 더 열심히 돌아보게 되었고, 내가 가야할 방향과 부족한 부분이 무엇인지 오래 생각해 볼 수 있는 피드백도 (이메일 회신을 통해서...) 받아보았다.

취준하시는 분들 모두 힘냅시다! ㅎㅎ

'일상' 카테고리의 다른 글

티스토리 초대장 배포합니다~  (11) 2017.11.30

  클라우드 서비스는 데이터 저장소를 사용자의 로컬이 아닌 서버에 두고, 네트워크 통신을 활용해 서버의 데이터를 이용하는 것을 의미한다. 이러한 시스템이 데이터가 마치 구름처럼 떠있고 이를 필요시마다 활용하기에 "구름"을 은유적으로 표현하여 이러한 명칭을 쓰게 되었다. 클라우드는 그 활용 용도에 따라 크게  IaaS, PaaS, SaaS 등 3가지로 구분 지을 수 있다. 이에 대한 설명은 다음과 같다.


◐ IaaS (Infrastructure as a Service)

  IaaS는 PaaS, Saas의 기반이 되어주는 기술이다. 기본적인 클라우드의 형태를 갖추기 위해서는 IP, 네트워크, OS, 스토리지 등 다양한 구성요소가 요구된다. 이러한 체계를 모두 갖추고 실질적으로 데이터를 입출력 할 수 있는 기반이 되는 형태를 IaaS라 한다.


◐ PaaS (Platform as a Service)

  IaaS를 기반으로 개발자가 별도의 플랫폼을 설계하거나 제작 할 필요 없이, 서비스를 개발 할 수 있는 환경을 제공하는 클라우드 서비스다. 이러한 형태의 클라우드는 관련된 응용 프로그램을 개발 할 수 있는 API를 함께 제공하고 있다. 관련된 서비스는 네이버 API, 구글 API, 아마존의 EC2와 같은 서비스를 예로 들 수 있다.


◐ SaaS (Software as a Service)

  다양한 응용프로그램을 클라우드 형태로 서비스하는 것을 의미한다. 예를들어, 한글과컴퓨터의 넷피스 24, MS의 Office 365와 같은 서비스처럼, 클라우드 상에 업로드 된 데이터를 웹 기술을 통해 접근하여 편집, 저장 할 수 있다. 이러한 서비스의 경우 스토리지 용량에 대해 유연하게 대처 할 수 있을 뿐만 아니라, 백업과 같은 관리 및 내부적인 시스템 처리에 대해 사용자가 별도로 신경써야 할 부분이 없다.

+ Recent posts