부제: 우아한형제들 서류, 우아한형제들 면접, 우아한형제들 코딩테스트 2017년 12월에 우아한 형제들 신입공채에 지원했었다. 기술 직군으로 지원했고, 1차면접에서 탈락했다. 비록 1차 면접에서 탈락했지만, 공공의 이익(?)을 위해 기억을 더듬어 후기를 남긴다. 0. 시작하기 전에 2018년 하반기에 쓰는 글이지만, 2017년 하반기 신입공채에 지원했다. 지원할 당시 1년 반 정도의 IT회사 근무 경력이 있었다. 대학 졸업 예정자와 2년 미만의 경력자는 지원할 수 있는 전형이었으므로 지원 자격을 맞출 수 있었다. 1. 서류/자기소개서 자기소개서 문항이 딱 하나였다. 자신을 자유롭게 소개하는 것. 내가 소프트웨어 개발을 좋아하는 이유, 개발자가 되고 싶은 이유, 우아한형제들에서 하고싶은 일 들을 담백하게 ..
부제: 라인플러스 면접. 라인플러스 코딩테스트. 라인플러스 서류 2018년 상반기에 라인플러스 신입공채에 지원했었다. 1차 면접에서 탈락하게 되었지만, 공공의 이익(?)을 위해 기억을 더듬어 후기를 남긴다 0. 시작하기 전에 지원할 당시 2년 정도의 IT 회사 근무 경력이 있었다. 그러나 신입 공채에 지원하기 위해 경력을 작성하진 않았다. 2017년 하반기 신입공채에도 지원했었는데, 그 때는 코딩테스트 전형에서 탈락했다. 2018 상반기 신입공채에 또 지원해서 1차면접까지 진출(?)한거 보면 서류 필터링은 따로 없나보다. 1. 서류 / 자기소개서 라인플러스는 B2C 서비스를 하는 IT 회사 치고는 자기소개서를 빡세게 보는 곳으로 유명하다. (경력직도 마찬가지 인 것 같다.) 그러나 2018 상반기 신입 ..
상호배제(Mutual Exclusion)란, 특정 프로세스가 공유 자원을 사용 중일 때 다른 프로세스가 이 자원에 접근하지 못하도록 막는 것을 의미한다. 그러니까, 공유를 하면 안되는 자원(Resource)의 동시 사용을 피하는 방법 중 하나이다. 스레드의 경우, 프로세스와 달리 메모리의 Stack 영역을 제외한 부분을 다른 스레드와 공유하는데, 이 부분에서 스레드간 동시 사용을 피하고 싶을 때 주로 사용한다. (※참고: [IT 기술면접 준비자료] 교착상태와 식사하는 철학자들) 동시 접근을 막기 위해 프로그래머에 의해 구현된 코드 영역을 임계 구역(Critical Section)이라고 한다. ▶상호배제를 재미있게 설명한 삽화. Mutex가 지켜주는 덕에, 화장실은 딱 1명만 쓸 수 있다. 더 쉬운 이해를..
Java의 Collection Framework는 프로그램의 개발에 있어, 유용하게 쓰일 자료구조를 정의해놓은 것이다. 이를 통해 모든 객체타입을 구성요소로 하여 데이터 저장 방식을 손쉽게 활용할 수 있다. 단, Primitive Type(기본형)의 경우, 구성요소가 될 수 없음에 유의하자.※ 참고: [IT 기술면접 준비자료] JAVA의 Wrapper Class와 AutoBoxing 1. 컬렉션 프레임워크의 인터페이스 구조 왠 인터페이스!? 라고 생각하는 사람도 있겠다. 사실 컬렉션 프레임워크의 구성요소들은 '미리 정의된 클래스'이다. 그리고 이들을 계층화 (묶어주는)해주는 인터페이스가 존재한다. ▶ 컬렉션 프레임워크의 인터페이스 구조 위 그림은 컬렉션 프레임워크의 인터페이스만 나타낸 그림이다. 즉, 모..
윈도우 운영체제의 가상 메모리(Virtual Memory)는 RAM을 관리하는 방법 중 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 할당하는 방식을 말한다. RAM의 부족한 용량을 보완하는 데 주로 쓰인다. 윈도우 운영체제는 가동되고 있는 프로세스들의 내용(페이지) 중, 덜 중요한 것들을 하드 디스크의 공간에 옮겨 놓는다. (당연히 어디에 저장했는지도 기록해 놓는다.) 그리고 프로세스가 동작하는 도중, 메모리에 필요한 데이터(페이지)가 없으면 하드디스크를 찾아 해당 데이터를 가져온다. (이 과정에서 속도 저하가 발생. ROM이 RAM보다 느리기 때문.) ▶ 가상메모리로 메모리 용량을 확보한 모습. 하지만 가상메모리는 용량이 충분할 때도 쓰인다, 가상메모리의 동작 프로세스를 설명하..
※ 같이 보면 좋은 포스팅 [IT 기술면접 준비자료] Process와 Thread의 비교 프로세스(Process)가 구동하려면 다양한 시스템 자원이 필요하다. 대표적으로 CPU(중앙처리장치)와 입출력장치가 있는데, 최고의 성능을 내기 위해 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것을 CPU스케줄링이라고 한다. CPU스케줄링에 대해 알아보기 전에, 왜 필요한지 짚고 넘어갈 필요가 있다. (스케줄링 기법에 어떤 것들이 있는지 외우는 것보다 중요하다.) 프로세스의 생명주기 라면을 끓일 때, 물이 끓을 때까지 멍하니 기다리지는 않을 것이다. 라면 봉투를 미리 뜯어 놓기, 스프 미리넣기, 각종 재료를 미리 준비하기 등을 물이 끓는 것을 기다리면서 할 것이다. 여기서 CPU스케줄링을 착안하면 되겠다..