반응형

 


기업 면접을 준비하기 위해 CS지식을 정리해야하는데, 

가장 좋은 수단이 블로그인 것 같아서 정리를 시작합니다. 제가 스스로 이해하기 편한 수준으로만 간략히 적어 내용이 조금 부실할 수 있는 점 양해 부탁드립니다 : )


운영체제란?

  • 하드웨어 자원들을 관리하는 프로그램들의 집합
  • 응용프로그램들을 위한 System Service Provider
  • 하드웨어와 응용프로그램을 이어주는 연결부
  • 단순 SW뿐만 아니라 주변기기를 포함한 하드웨어도 모두 관리
  • 전력 불안정, 프린터의 용지 부족, 네트워크 연결 실패등 모두 OS가 인지
    (일반적으로 Log 파일 형태로 저장됨)
  • Kernel Mode Operation과 User Mode Operation을 제공

System Call이란?

  • 운영체제의 서비스에 접근하기 위한 인터페이스
  • 권한이 낮은 응용SW가 커널에서 제공하는 서비스를 사용하는 방법

Kernel 이란?

  • 운영체제의 핵심이 되는 컴퓨터 프로그램
  • 부팅하는 동안 메모리를 로드하는 운영체제의 첫 부분
  • 지속적으로 읽어들일 수 있도록 되어 있으며, 메모리 상에서 사용자가 접근할 수 없도록 커널 영역에서 보호됨

 

Command Interpreter란?

  • OS나 프로그래밍 언어의 환경에서 입력된 명령어를 해석하여 실행하는 컴퓨터 프로그램
  • 줄 단위로 명령어를 읽어들인다고하여 Command Line Interpreter라고 하기도 함
  • 사용자 또는 명령어 파일로부터 명령어를 읽어들인 후, 명령어를 시스템 콜로 변환하여 이를 실행
  • Bash쉘이나 Zsh등이 이에 해당

OS의 자원 관리 방법

  • 시분할 : CPU 스케줄링을 통한 멀티프로세스 실행과 같이 스케쥴러를 통해 시간적으로 분할하는 것
  • 공간분할 : Memory, Disk등 하드웨어 자원을 여러 프로세스나 유저가 사용할 수 있도록 공간적으로 분리하는 것

컴퓨터 부팅과정

  • Booting은 Bootstrapping의 간략화된 표현으로, 원래는 Bootstrapping이 정확한 표현
  • BIOS가 시스템의 하드웨어 이상유무 점검
  • 전원 공급 후 부트로더를 통해 Bootstrap Program 메모리 적재
  • Bootstrap Program이 커널을 적재하고 실행
  • 커널에 의해 init 프로세스 생성, OS 초기화 작업 수행

인터럽트란?

  • 주변 환경에 반응하고 상호작용하기 위해 OS에서 사용
  • 입출력 하드웨어의 변화나 예외상황 처리가 필요할 경우 CPU(마이크로프로세서)에게 알려 처리할 수 있도록 함
  • 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉨

하드웨어 인터럽트(비동기식 인터럽트)

  • 하드웨어가 발생시키는 인터럽트
  • 버스를 통해 CPU에 직접 시그널을 보냄
  • 비동기식 인터럽트라고도 함 (정해진 기준 없이 예측 불가하게 이벤트 발생)

소프트웨어 인터럽트(동기식 인터럽트)

  • 사용자가 인터럽트를 직접 호출하는 것은 금지
  • 시스템 콜을 통해서만 가능
  • Exception이라고 불리기도 함
  • 명령어 실행 후 그 결과(instruction fault)로 발생하는 경우가 많음

TRAP

  • 실행 중인 프로그램 내에 테스트를 위해 특별한 조건을 걸어놓은 것
  • 인터럽트, 예외가 발생되면 trap에 의해 catch
  • trap handler가 상황에 맞게 처리
  • 주 사용목적은 디버깅(Breakpoint)

인터럽트 과정

  • 소프트웨어에서 시스템 콜을 통해 인터럽트 발생
  • 현재 프로세스의 상태 정보(MEM주소, 레지스터값, 하드웨어 상태등)를 해당 프로세스의 PCB(Process Control Block)에 저장
  • PC(Program Counter, IP)에 다음에 실행할 명령의 주소를 저장
  • 인터럽트 별로 인터럽트 핸들러의 주소가 담겨있는 인터럽트 벡터를 읽고 ISR 주소값을 얻어 인터럽트 핸들러 역할을 하는 ISR(Interrupt Service Routine)로 점프하여 루틴 실행
  • 실행이 완료되면 레지스터 값들을 복원
  • ISR의 끝부분에 존재하는 IRET 명령어에 의해 인터럽트 해제
  • 저장해둔 PC 값을 복원하고 이전 실행 위치로 복원
  • 위와 같은 Context Switch 과정을 거침

단편화(Fragmentation)

  • 메모리 할당과 해제가 계속하여 이루어지는 환경에서 발생하는 현상
  • 공간이 할당되었는데도 불구하고 사용하지 않는 공간이 있거나, 전체적으로 봤을 땐 빈공간이 충분한데도 불구하고 연속된 메모리 공간이 없어 사용할 수 없는 경우 등 메모리 낭비
  • 내부 단편화와 외부 단편화, 데이터 단편화로 나뉨

내부 단편화(Internal Fragmentation)

  • 메모리 할당이 이뤄질 때, 해당 Process가 필요한 양보다 더 큰 메모리가 할당되어 메모리 공간이 낭비
  • 80MB가 할당되었는데 사실상 60MB만 사용된다면 20MB만큼 내부 단편화 발생
  • 세그멘테이션 기법으로 해결이 가능

외부 단편화(External Fragmentation)

  • 메모리 할당과 해제가 반복되어 작은 메모리 중간중간에 사용하지 않는 메모리 공간인 hole이 다수 생기게 됨
  • hole이 연속적이지 않고 흩어져있게 되면 총 공간은 충분함에도 불구하고 새로운 작업이 적재되지 못함
  • 페이징 기법으로 해결이 가능

Paging 기법

  • 보조기억장치를 이용한 가상 메모리(Virtual Memory)를 같은 크기의 블록으로 나눔 이것이 Page
  • 주 기억장치 또한 Page와 같은 크기로 나눔, Frame이라는 명칭을 사용
  • 사용하지 않는 프레임을 페이지에 옮기고, 필요한 메모리를 페이지 단위로 프레임에 옮기는 방식
  • 프로세스 내부에 존재하는 페이지가 굳이 연속적으로 적재될 필요가 없음
  • 다만, Page를 가득채우지 못하는 경우가 발생하면 내부 단편화는 생김(예, 4kb인 페이지단위에 1kb만 사용할 경우)
  • 하지만 외부 단편화 대비 미미한 수준

Segmentation 기법

  • Segmentation 기법은 가상메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 분할하여 메모리에 할당
  • 세그먼트의 크기는 제각각이기 때문에, hole이 다수 발생하게 될 경우 마찬가지로 외부 단편화 문제가 발생함
  • Segmentation 기법은 보호와 공유 관점에서 매우 효율적이므로, intel은 이 두가지 방식을 혼용하기도 함
    세그먼트를 페이징 기법으로 나누는 Paged Segmentation등
  • Paged Segmentation의 경우 페이지 테이블과 세그먼트 테이블 주소 변환이 다수 일어나기 때문에 연산 속도가 다소 느림
반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


 

해당 포스팅은 지원과정 및 합격후기가 아니라 연수과정 후기이므로,

지원 준비를 하시는 분들은 아래에서 지원 후기를 확인하세요!

2020/12/16 - [IT 외부활동/SW마에스트로] - [SW마에스트로] 소프트웨어 마에스트로 11기 합격 후기 - 서류 대비

2020/12/16 - [IT 외부활동/SW마에스트로] - [SW마에스트로] 소프트웨어 마에스트로 11기 합격 후기 - 코딩테스트

2020/12/16 - [IT 외부활동/SW마에스트로] - [SW마에스트로] 소프트웨어 마에스트로 11기 합격 후기 - AI인적성

2020/12/16 - [IT 외부활동/SW마에스트로] - [SW마에스트로] 소프트웨어 마에스트로 11기 합격 후기 - 최종 면접

 

 

소마 합격자 혜택


  • 기본적으로 월 100만원의 장학금이 지급, 대신 아르바이트여도, 4대보험이 가입되어있는 다른 업무는 절대 병행이 불가능(대학원생은 가능)

  • 합격자에게 150만원 상당의 기기지원금,  이를 통해 평소에 가지고 싶었던 비싼 전자기기를 구매, NAS, 맥북, 데스크탑 등등

    (저는 데스크탑을 질렀습니다!)

  • 프로젝트기간동안 3인 1조로 720만원의 프로젝트 비 지급, 이를 통해 프로젝트에 필요한 기자재를 구매 가능, Jetson nano와 같은 IoT보드, 머신러닝 학습을 위한 서버 대여 혹은 GPU등

  • 이름만 들어도 알법한 대기업의 실무진분들, 팀장/부장급 멘토님들과 함께 프로젝트를 매우 체계적으로 진행해볼 수 있으며, 학부에서 진행하는 프로젝트와는 차원이 다른 지도를 받을 수 있음

팀 빌딩 과정


아주 중요한 과정입니다.

기존 소마 연수과정에서는 다양한 Ice-Breaking 오프라인 행사등이 있어서, 참여하다보면 자연스럽게 연수생들끼리 친해지고 다들 소마 연수센터 씨앗방에 모여있다보니 자연스럽게 팀매칭이 진행됬는데,

 

이번 11기에는 코로나 바이러스로 인해 모든 행사가 취소되고, 비대면으로 진행되면서 팀빌딩이 아주 어려웠습니다.

각자 자기 자기소개를 올려두고, 온라인을 통해 연락을 직접 취해서 팀을 빌딩해야 됐는데

저는 어쩌다보니 학교에서 ML 멘토링을 해줬었던 후배가 소마에 합격했다는 소식을 인스타그램을 통해 전해듣고, 
그냥 같은 학교끼리 하자고 하여, 같은 학교 선후배사이 3명으로 팀을 구성했습니다.

 

다만, 내년엔 비대면이 아니라 다른 기회가 있다고 한다면, 

새로운 사람들과 함께하는 소마과정이 더 재밌지 않을까 생각합니다.

생각보다 팀원들이 소마를 대하는 태도가 모두 다를 수 있고, 생각하는 목표나 주제도 모두 다르기 때문에,

반드시 나와 비슷한 성향을 가진 사람과 팀을 이루는 것이 중요합니다.

 

멘토 신청 과정


초반엔 멘토님들이 어떤 분이 있는지조차 알기 어려우므로,

몇주간 Zoom을 통해 다양한 멘토님들이 각종 주제로 멘토링을 진행해주십니다.

 

여기서 다양한 멘토님들을 만나뵙고, 

팀원들과 성향이 가장 잘맞는 멘토님께 팀 멘토 신청을 드리게 되면, 

멘토님이 승낙할 경우 먼저 선착순으로 차지하는 식입니다.

 

소마에는 흔히 말하는 "인기"멘토님들이 존재합니다.

이전 기수로부터 쭉 내려오는 입소문이 있기 때문에, 학생들을 열심히 지도해주시고

인증자를 많이 배출한 멘토님들의 경우 굉장히 빠르게 선점되는 경우가 많으니, 발빠르게 움직이는 것이 좋습니다!

 

저희팀은 PM역할을 해주실 멘토님 1분, AI 기술멘토님 2분, 기획/BM쪽 멘토님 1분으로 총 4분의 멘토님을 모셨으며,

팀당 최소 4명, 최대 5명의 멘토를 지정받아야 합니다.

 

개인적인 생각으로는 멘토님은 4분이 더 좋다고 생각합니다.

프로젝트를 진행하다보면, 멘토님들 개개인의 능력과 상관없이 그냥 어쩔 수 없이, 특정 몇분이 주로 지도를 해주시게 됩니다. 5명의 멘토님이 있을 경우, 물론 다양한 의견 피드백을 받을 수 있어 좋겠지만, 

멘토님들마다 조언이 다를 수 있고, 오히려 혼란을 가져올 수 있습니다. 

4분의 멘토님과 멘토링을 진행하면서도 혼란스러웠던적이 많은데, 5분이 모일 경우 개인적으로 프로젝트 진행이 더 혼란스러울 것 같다고 생각합니다.

 

주제 선정 과정


팀과 멘토님들을 모두 모았다면 주제 선정이 필요합니다.

이 때 정말 중요한 결정을 내려야 합니다. 

 

팀원들과 함께 모여서, 상위 10%로 뽑히는 SW마에스트로 최종 인증자 선정이 목표인지, 아니면 개인의 능력 향상과 
프로젝트 경험을 쌓는게 목표인지 정해야 합니다.

 

SW마에스트로는 기본적으로 "창업 장려" 프로그램입니다.

아무리 고급 기술을 쓰고, 가치가 있더라도, 비즈니스 모델과 시장성이 프로젝트 최종 평가 지표로 사용됩니다.

그러다보니 하고 싶은 주제가 마땅히 돈을 벌 방법이 없다면, 좋은 평가를 받지는 못하게 됩니다.

 

따라서, 단순히 기술을 써보고 프로젝트를 진행해보는 것을 목표로 하여 도전적인 주제를 선정할 것인지,

무난하게 돈이 될만한 사업적 아이템을 선정할 것인지를 팀원과의 합의 끝에 결정해야 합니다.

 

아무래도, 사업적 아이템은 프론트엔드, 백엔드등 보여주는 부분이 매우 중요하게 작용하기 때문에, 이 부분에 시간을 많이 들여 기술적인 부분에 시간을 들이기 힘들다는 점이 있으나,

기술적인 주제의 경우 비록 허접한 웹사이트 하나가 동작하더라도, 뒤에서 동작하는 인공지능, 블록체인등의 기술이 가치가 있다면, 이러한 기술들을 다뤄보면서 배우는 인사이트가 있으니, 장단점이 각각 있다고 생각됩니다.

 

프로젝트 개발


프로젝트는 기본적으로, SW마에스트로에서 제공하는 GitLab을 통해 진행되게 됩니다.

유의하셔야 하는것이, 나중에 최종 평가때 이 GitLab을 바탕으로 연수생 개인 점수와 코드리뷰를 진행합니다.

막판에 몰아서 커밋하게 될 경우 다 티나겠죠?

 

평소에 깃랩을 잘 관리해놓고, README도 작성하고 구조도 깔끔하게 해놔야 최종 평가 때 코드 리뷰에서 좋은 점수를 받을 수 있습니다. 

 

중간&최종 발표


발표에서 가장 중요한 건, 임팩트입니다.

저도 발표준비를 하면서 가장 많이 실수했던 부분이 기술 관련 내용을 너무 과할정도로 많이 적어둔 것입니다.

제 딴에는 하느라 1~2주를 꼬박 밤샘했던 부분이라 꼭 말하고 싶었던 내용인데, 하나 둘 씩 쌓이다보니 그 내용이 너무 방대해지고, 심사위원분들에게는 사실 귀에 잘 들어오지도 않고, 지루한 내용이 되겠죠.

 

발표자료를 만들때 페이지 수를 적절하게 정하고, 불필요한 기술 / 코딩 내용은 모두 빼버리고, 프로젝트의 주요 기능과 사회적으로 어떤 효과를 가져올 수 있는지를 어필하는게 중요합니다.

 

기술 내용은 차라리 Appendix로 빼두고, 질문이 들어왔을때 활용하는등의 전략을 취하는것이 더 좋습니다.

 

 

총평, 해주고 싶은 조언


  • 소마는 6개월간 훌륭한 멘토님들의 지도를 받으면서 성장할 수 있는 기회입니다.

  • 근데, 개개인이 하기에 달렸기 때문에, 열심히 하지 않는 분들은 전혀 성장을 할 수 없습니다.

  • 열심히 하는 연수생과 대충 하는 연수생들은 멘토님들도 다들 알아보십니다. 

    (기업에서 PM하시던 분들은 특히 날카롭습니다.)

  • 이러한 평가는 최종평가 이전 멘토님들에게 전달되는 연수생 개인 성실도 평가에 반영됩니다.

  • 사무국 분들과는 친하게 지내시면 좋습니다. 굉장히 우호적이시고, 딱딱하지 않고 잘 놀아(?) 주십니다 ㅎㅎ

  • 땀흘린 만큼, 밤새면서 마신 에너지드링크만큼 다 보상받는곳이 바로 소마인 것 같습니다. 열심히 하다보면, 

    정말 많은 기회가 옵니다. (멘토님들과 친하게 지내면 여러모로 소마 외적으로 다른 혜택을 보실 수 있습니다.)

  • 비록 저는 인증을 염두에 두지 않고 공부를 목적으로 열심히 불태웠지만, 그럴듯한 모델을 만들어내고, 시기도 운좋게 맞아 떨어지면서 최종 인증자로 선발될 수 있었습니다. 열심히 하면 사무국과 멘토님들이 다 알아봐 주시는 것 같습니다!

  • 이외에도 궁금한점이 있으시다면 언제든지 댓글로 문의 주세요 : )
    아는한에서 친절히 답변드리겠습니다.

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


2차 코테를 합격한 이후에, 최종 면접 장소에 대해서 연락이 오게 됩니다.

11기 같은 경우 코엑스 컨퍼런스룸에서 면접이 진행되었습니다.

최종 면접의 경우 2:1~ 3:1 정도의 경쟁률을 가지는 걸로 알고 있습니다.

수 많은 전형을 거쳤는데도 2~3:1이라니 소마가 얼마나 인기가 많은지 알 수 있었습니다.

 

1. (공통질문) 자기소개


면접을 시작하게 되면, 간단한 자기소개와 지원 동기, 그리고 자신있는 분야에 대해 말해보라고 개인별로 질문을 하시게 되는데, 저의 경우 AI인적성 때 준비해뒀던 1분 자기소개를 거의 그대로 읊었고, 자신있는 분야에 대해서는 블록체인과 인공지능 쪽을 얘기했습니다.

 

여기서 했던 자기소개 위주로 질문이 흘러가는 경향이 있기 때문에,

면접 분위기를 내쪽으로 확보하고 싶다면, 자신이 확실히 말할 수 있는 쪽으로 질문을 유도하는 기술이 필요합니다.

 

2. (개별질문) 코딩테스트 관련 질문


코딩테스트가 비대면으로 진행된 만큼, 부정행위가 있었을 수 있으므로

가끔씩 코딩테스트와 관련하여 날카로운 질문을 던지십니다.

 

본인이 풀지 않았다면 대답하지 못할 만한,

여기서 왜 이 자료구조를 썻는지,

이 자료구조가 아니라 다른걸 썻어야 더 좋지 않은지,

만약 대리 시험을 한 사람은 여기서 다 걸러지지 않을까 싶습니다.

 

저의 경우 코딩테스트의 코드와 관련해서는 딱히 질문은 없으셨고(별로 못봐서 그런거 같아요 ㅋㅋㅋ)

"이것저것 학부생치고 정말 많이 하셨는데, 수상 실적이나 능력대비 알고리즘 점수는 좀 실망스럽네요?"

라고 질문하셨어서, 제가 신기술쪽 개발을 워낙 좋아해서 알고리즘 공부엔 조금 소홀했다라고 말씀드렸습니다.

 

그랬더니, 갑자기 돌발 꼬리물기 질문으로 다른 면접관님이

"개발에 있어서 알고리즘이 별로 안중요하다고 생각하나요?" 라고 질문하셨습니다.

 

저는 개인적으로 알고리즘이 개발에 꼭 중요한 요소는 아니라고 생각했기에,

"어느정도 이해하는것은 필요하지만, 반드시 깊게 공부할 필요는 없다고 생각합니다." 라고 답하였습니다.

 

"알고리즘의 정의가 무엇인가요?"라고 되물으시는 면접관님의 말씀에,

 

"가장 효율적으로 코드를 짜는 방법입니다."라고 답했습니다.

 

"그러면 머신러닝 이런거 할때 알고리즘이 그래도 안중요한가요?"라고 또 여쭤보시는거 보니,

원하는 답이 아닌 것 같았지만, 하지만 이제와서 주장을 굽힌다면 오히려 더 없어보이기 십상이니 그냥 제 주장을 밀고나갔습니다.

 

"네. 학계와 산업계가 따로 있듯, 알고리즘은 저보다는 페이스북과 구글 리서치팀이 더 잘만들 것이라고 생각합니다. 저는 그들이 내놓은 논문중에 필요한 기술을 추려내서 제 프로젝트에서 적절히 사용하는 개발자가 되겠습니다."라고
특유의 능글맞은 미소와 함께 답하였습니다.

 

그제서야 심사위원분들이 못말리겠다는듯 밝게 웃으시면서 끄덕끄덕하셨습니다.

개인적으로는 오히려 여기서 분위기가 더 좋아진 것 같았습니다.

만약 여기서 "제가 잘못생각한 것 같습니다. 알고리즘은 필요할 것 같습니다."라고 했다면

오히려 감점사유가 되지 않았을까 생각합니다.

3. (개별질문) 자소서 및 자신있는 분야에 대한 질문


 

처음 자기소개 때 말했던 자신있는 기술에 대한 질문과, 자소서에 적혀있는 프로젝트 경험, 이력등을 바탕으로 질문이 시작됩니다. 저의 경우 자소서 내용 위주로 질문이 진행되었고, 의외로 CS쪽 지식에 대해서 묻지는 않으셨습니다.

면접을 보는 방마다 질문의 색이 크게 다르니, 이 점 고려해야 대비하셔야 될 것 같습니다.

 

  • 미국 Purdue 현지 석박사들과 함께 진행한 프로젝트인지?

  • 논문은 다 영어로 직접 작성한건지?

  • 딥러닝 모델로 RetinaNet과 Mask R-CNN 모델을 사용한 이유

  • 특허는 어쩌다 내게 되었는지?

  • TOPCIT 공군참모총장상 받으신 기록있네요?

  • 팀플할때, 문제가 생기면 어떻게 해결하는지?

등등의 질문을 받았고 딱히 어려움없이 사실 기반으로 대답하였습니다.

특히 팀플할때 문제가 생기면 어떻게 해결하는지는 거의 모든 지원자들에게 다 나왔던 공통질문입니다.

저는 매주마다 Scrum하듯이 PPT로 진행상황을 발표하며 플젝을 해왔기 때문에 그런 방법이 아주 좋았다고 대답했습니다.

 

방마다 면접 분위기가 많이 다릅니다.

저희방은 딱히 압박 면접 느낌은 없었고 다들 편안하게 진행해주셨던 반면,

 

다른방은 굉장히 압박 면접 분위기로, 기술에 대한 심층면접이 진행되었다고 합니다.

따라서 CS지식도 잘 준비하시는게 좋습니다.

 

 

4. (유의사항) 하면 안되는 대답


면접관 분들이 대부분 아주 싫어하시는 대답들이 하나 있었는데,

생각보다 많은 분들이 범하는 실수인 것 같았습니다.

 

Case #1 
지원자 : 개발을 배우고 싶어서 지원했습니다!
면접관 : 소프트웨어 마에스트로는 배우러오는 과정이 아니라, 새로운걸 창조하는 프로그램인데.

제가 본 면접장 뿐만 아니라, 친구를 통해 듣기로는 다른방에서도 이런 갑분싸 상황이 많이 나왔다고 합니다.

SW마에스트로는 기본적으로 말씀드렸듯, 창업 장려 프로그램입니다.

6개월간의 프로젝트를 단순히 공부를 하려고 하기 보다는, 뭔가 결과물이 나와야 하는 연수 과정이다보니,

면접관 분들이 구체적인 계획 없이, 공부를 하겠다! 라는 대답을 별로 좋아하시지 않습니다.

동일 주관기관인 IITP에서 SW마에스트로외에 IT교육 프로그램인 42서울을 따로 두고 있으므로, 

SW마에스트로는 뭔가 그럴듯한 프로젝트를 6개월간 진행하는 프로그램! 이라는것을 꼭 숙지하셔야합니다.

면접관님들의 말들을 들어보면 관점이

"능력 있는 학생들을 양성하여 개발자를 만드는 것"이 아니라,

"능력 있는 학생 개발자들을 데려다가 멋진 프로젝트를 만드는 것"이 목적인 연수과정입니다.

 

Case #2
지원자 : ~~라는 책을 보며 개발 공부를 시작했었습니다.
면접관 : 그 책의 저자가 가장 중요하게 여기는 것이 바로 Coding Convention이죠. 
헝가리안 표기법에 대해 아는 대로 설명해보세요.
지원자 : ...
면접관 : 책에 자주 나오는 내용인데...

책의 내용을 완벽히 숙지하고 있지 않다면, 

책을 보면서 공부했다는 내용은 오히려 매서운 꼬리물기 질문을 받을 수 있습니다.

제 생각엔, 개인이 진행했던 프로젝트를 위주로 말하는게 대답도 용이하고 좋습니다.

 


 

면접까지 뚫고나면, 이렇게 최종 합격 결과가 메일과 SMS로 전송됩니다.

또한, 면접에 참여한 모두에게는 소마 봉투에 담긴 면접비가 지급됩니다!

 

여기까지 합격 수기였습니다.

12기 분들 좋은 결과 있기를 바랍니다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


2차 코딩테스트까지 합격하게 되면, AI 인적성 고사를 봐야 합니다.

AI 인적성 고사는 마이다스IT사의 솔루션을 통해 진행됩니다.

 

카메라와 마이크를 통해 진행이 되는데,

사람의 얼굴을 통해 말할 때 확신도, 거짓말 유무등 다양한 분석을 진행한다고 합니다.

NLP를 통해 자기소개 내용을 직접 분석하는것은 아니므로,

너무 긴장하지 않고 본인이 하고싶은 말을 하는 것이 좋겠습니다.

 

1. 자기소개


약 1분간 자기소개를 진행해야 합니다.

갑자기 삐- 소리와 함께 시작되므로 사전에 1분짜리 자기소개를 준비를 해두는 것이 좋습니다.

제가 사용했던 대본을 예시로 보여드리겠습니다.

 

만나뵙게 되어 반갑습니다. 기술을 통해 세상을 바꾸는 개발자가 되고자, 소프트웨어 마에스트로에 지원하게 된 하현수 지원자입니다. 저는 IT 신기술을 통한 가치 창출에 대한 관심이 많아, 학부 과정 중 다양한 외부활동을 통해 제 역량을 키우고자 하였습니다. 특히 최신 기술에 관심이 많아, 미국 퍼듀대학교 국비 장학생으로 선발되어 엑스레이를 통한 폐렴 진단 모델 연구에 참여하며 IEEE 해외 학술대회에서 논문을 발표하였고, 그외에도 블록체인 연합 학회등에 참여하며 국내 학회 논문 2건 및 특허 등록 2건을 진행하였으며, 현재는 국내 업체에서 특허 기술이전을 요청하여 이전 과정을 진행하고 있습니다. 단순히 기술에 대한 연구 뿐만 아니라, 실제 기술을 활용한 서비스를 개발하는 실력을 키우기 위해 현대, 라인 이더리움 재단 등의 기업등에서 개최하는 다양한 해커톤, 개발 공모전등에 참여하여 구현 능력을 높이려고 노력하였고, 그 결과 8건의 외부상 수상을 할 수 있었습니다. 학부 과정 동안 키워 온 이러한 역량을 바탕으로, SW 마에스트로 과정에서 6개월간 의미있는 결과물을 얻어 가고 싶습니다!

 

어필할 수 있는 장점들을 최대한 자랑하듯(?) 말했습니다.

어차피 1분 스피치는 자기 PR이니까, 샤이한 모습보다는 차라리 당당하게 자랑하는게 좋다고 생각하였습니다.

이렇게 자기소개와 지원동기를 마치게 되면, IQ테스트 형태의 게임으로 넘어가게 됩니다.

 

2. 테스트 게임


IQ테스트와 같은 다양한 형태의 게임이 시작됩니다.

순발력, 공간감각, 계산속도, 암기력등 다양한 능력을 요합니다.

다만, 이 게임을 망친다고 해서 소마 합격에 영향을 미치는 것 같지는 않습니다.

너무 긴장하지 말고 그냥 하시면 될 것 같아요.

 

참고로 유튜브에 AI인적성을 검색하시면, 실제 게임들이 어떻게 나오는지

유튜버들이 설명하고, 공략하는 영상이 있으니 준비를 하시려고 한다면 

Youtube를 참고하시면 될 것 같습니다.

 

3. 상황 대처 면접


어떠한 상황을 주고, 그 상황에서 어떻게 행동할 것인지 묻는 질문이 이어집니다.

생각할 시간이 적으므로, 최대한 빠르게 결단을 내리는 것이 좋으며,

AI 면접의 특성상 당황한 표정이나 더듬는 말투등은 감점사유가 될 수 있으므로, 

최대한 여유롭고 급하지 않게 천천히 대답을 진행하시면 됩니다.

 

AI인적성이 정확히 평가에는 어떻게 반영되는지 알 수는 없지만,

아마 그 비중이 그렇게 크지는 않다고 생각됩니다.

AI인적성 게임 대비등에 많은 시간을 들이기보다는, 실제 면접 대비에 시간을 많이 쏟는게 효율적이라고 생각됩니다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


이번엔 코딩테스트에 관해 포스팅을 진행하겠습니다.

우선 서류통과의 관문을 넘기셨다면, 다음과 같은 메일을 받게 됩니다.

 

서류 전형 합격 이후 전형에 대해 소개 메일을 날아오게 되는데,

전형이 정말 많습니다. 역시 IT쪽 외부활동에선 TOP으로 분류되는 SW마에스트로 답게 경쟁률이 어마어마 합니다.

이번엔 서류 합격 이후로 첫번째로 만나게 되는 전형인 코딩테스트 부분에 대해 다뤄보겠습니다.

 

원래 일반적인 경우 1차 코딩테스트는 온라인으로, 2차 코딩테스트는 오프라인으로 진행되지만, 11기 같은 경우에는 코로나 사태가 심각해짐에 따라 온라인으로 대체되었습니다.

 

12기 때는 코로나가 좀 잠잠해진다면 오프라인 코테 가능성이 있으니 염두하셔야 될 것 같습니다.

 

1차 코딩테스트, 2차 코딩테스트 모두 알고리즘문제 3개, SQL 문제 1개, 웹프로그래밍 문제 1개가 출제됩니다.

기존 시험에는 웹 프로그래밍이나 SQL이 없던 걸로 아는데, 아마 실제 구현력을 확인하기 위해 추가된 게 아닌가 싶습니다.

 

시험은 소마 수료생 선배님이 창업하신 Goorm(구름 IDE)의 코딩 테스트 플랫폼을 통해 진행됩니다.

IDE를 통한 코딩도 가능하며, IDE를 통해 개발된 코드를 복사 붙여넣기하시면 됩니다.

지원자간 코드 유사도 검사등이 진행되므로, 모여서 같이 시험을 보거나 답을 공유하는 부정행위는 오히려 붙을 사람까지 떨어지게 만드는 결과를 초래할 수 있으니 유의하세요!

 

1차 코딩 테스트


1차 코딩테스트의 경우 알고리즘 문제들은 1,2번은 비교적 난이도가 쉬운 구현 문제였고, 3번문제는 시간복잡도를 어느정도 생각하고 풀어야 하는 문제였습니다. 알고리즘 문제는 부분점수가 부여되므로, 틀리더라도 끝까지 노력을 해보시고 테스트케이스 일부만 맞추더라도 꼭 제출은 해주시는게 좋습니다.

그 후, SQL문제는 기본적인 수준이기때문에 Programmers의 SQL 대비 문제들을 몇문제 풀고 가신다면 전혀 어려움 없이 풀이가 가능할 것이라고 생각합니다. 

Web은 fetch를 사용한 문제로, 웹프로그래밍에 대한 선수지식이 없으면 다소 풀기 어려울 수 있습니다.

11기 부터는 코테 대비를 진행할때 JS, HTML등도 어느정도는 함께 진행해야 할 것 같습니다.

 

1차 코딩테스트의 벽도 뚫으셨다면 다음과 같은 안내를 받게 됩니다.

 

 

꿀팁 ) 이 때, 온라인 AI인적성의 경우 2차 코딩테스트 이후에 응시가 가능하므로, 

일단은 안보고 있다가 2차 코테를 봐본다음 (오픈 채팅방 분위기 보면 대충 망했는지 잘봤는지 느낌 옵니다..)
가능성 있다 싶으면 천천히 보시면 됩니다.

 

2차 코딩 테스트


2차 코딩테스트도 마찬가지로 알고리즘 3문제와 SQL 1문제, 웹 프로그래밍 1문제로 출제되었습니다.

1번문제는 저번과 비슷하게 매우 쉬웠고, 2번 문제는 BFS, 3번은 DP로 출제되었습니다.

저는 2번문제에서 시간이 부족하여 단순 For문으로 아마 효율성에서 감점되었을 것 같습니다.

SQL은 1차와 비슷하게 난이도가 높지 않았고, 웹프로그래밍은 AJAX를 통해서 API서버의 응답을 받아오는 문제로, 
아마 다양한 풀이가 존재하겠지만 저는 AJAX로 풀었습니다.

 

아마 여러 문항에서 감점을 받았을 것 같지만, 

웹 프로그래밍을 못 푼 지원자들이 많아 2차 코딩테스트까지 합격하게 되었습니다.

 

 

정리


  • 알고리즘 3문제, SQL 1문제, Web 1문제 고정 (12기때는 바뀔 수 있음)

  • DP, BFS, 단순 구현 문제가 주를 이룸. 너무 깊은 단계까지는 준비하지 않아도 된다.

  • SQL은 Programmers에서 SQL 단기 대비 문제 풀면 충분한 난이도

  • Web이 관건, 합격의 중요 조건중에 하나라고 생각됨, 무슨 문제가 나올지 모르기 때문에 가장 골치아프다.

    생활코딩등의 강의를 통해 JS, HTML 기초정도는 알아야 할 것 같다.

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형

 


사실 너무 늦게 작성하는 후기지만, 

저 또한 소마 10기 분들의 합격 후기를 보고 준비를 했던게 떠올라 대비 꿀팁과 저의 사례를 통한 합격 후기를 남기게 되었습니다. 예비 12기 분들이 소마 지원할 때 도움이 됐으면 좋겠습니다!

 

먼저 선발 절차는 다음과 같습니다.

조만간 곧 공고가 다시 뜨겠네요!

 

 

서류 검토, 1차 코테, AI 인적성 검사, 2차 코테, 심층면접으로 진행되어 있습니다.

자기소개서를 작성해야 하는데, 사실 시간이 많이 지나서 완벽하게 기억이 나지는 않습니다만, 대충 요약하면 다음과 같은 질문들이었습니다.

 


Q1. 소프트웨어 분야의 전문성을 키우기 위해 기울인 노력?

 

개인적인 역량을 묻는 질문인 것 같습니다. 성실성도 중요하겠지만, 개인이 이뤄낸 성과물을 어필하면 좋을 것 같습니다.


저는 제가 가지고 있는 특이점이자 장점인 Purdue 대학교 국비 교환학생 경험, IEEE 해외 논문 발표등 논문 3건과 특허 2건, 외부 대회 수상이력 8건을 어필하고자 노력하였습니다.

 

처음엔 아무 생각없이 제가 한 일들을 자랑하듯이 쭉 나열만 했는데, 친구들의 피드백을 받고 적절한 스토리 텔링을 섞고, 다소 임팩트가 없는 외부활동은 빼고 주로 어필하고 싶은 부분에 대해서 보다 자세히 기술하였습니다. 

 


Q2. 추후 어떤 사람이 되어 있을 것 같은지?

SW마에스트로의 창립 이유에 대해 알고 들어가야하는 질문이 아닌가 싶습니다.

SW마에스트로는 기본적으로 슬로건 자체가 "한국의 스티브 잡스를 양성하자"입니다.

물론 교육목적의 프로그램인것도 맞지만, 기본적으로는 창업 장려 프로그램입니다.

 

따라서, 단순히 어느 분야의 전문가가 되고 싶다, 대기업에 들어가서 개발자를 하고 싶다. 와 같은 무의미한 답변은 전혀 어필이 되지 못합니다.

 

굳이 창업이 아니더라도 좋으니, 본인의 가치관과 기술을 통해서 어떻게 공헌할 것인지에 대한 담대한 포부를 들어내는 것이 좋을 것 같습니다.

 

저는 기술을 통해 사회를 이롭게 하는 공학자가 되고 싶다는 가치관을 담아, 제가 생각하는 기술을 통한 소셜 임팩트에 대해 어필하고, 사회에 이런식으로 공헌하고 싶다를 적어냈습니다.

 


Q3. 진행하고 싶은 프로젝트가 있는지?

저는 평소에 블록체인 연구를 주로 하고 있었기 때문에, 블록체인과 인공지능을 합친 아이디어로 작성을 하였습니다.

지원자분들께서 평소 관심 가졌던 분야에 대해 써내려가는 것이 가장 좋을 것 같습니다.

 

실제 소마과정에선 여기서 적은 프로젝트랑 전혀 관련 없는 프로젝트를 하시는 경우가 대부분이니 너무 부담가지지 않아도 됩니다.

 


Q4. 학습 및 프로젝트 진행 계획

Q3과 연계될 수 있도록 진행하고 싶은 프로젝트와 관련되어 어떤 연수생, 어떤 멘토와 함께 하고 싶은지 최대한 구체적으로 적어주시면 됩니다.

제 생각엔 SW마에스트로에 임하는 자세나 태도를 묻는 문항이 아닐까 싶습니다.

 


꿀팁! 자기소개서를 홈페이지에서 한번 제출하게 되면, 추후에 요청하더라도 원본 파일을 확인하거나 보내주시지 않습니다. 반드시 제출 전에 자기소개서를 파일형태로 저장해두셔야 면접 대비를 할 때 편해집니다.

저는 제 자소서 내용을 모두 잊은 상태로 면접장에 들어가야만 했습니다...

 

여기까지 서류 부분 대비에 대해서 알아보았습니다.

다음 포스팅은 코딩테스트 대비로 찾아뵙겠습니다!

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형

 


USB 크기 인식 안될 때 해결방법

 

Windows 를 사용하다보면, 가끔씩 USB 용량이 줄어있는 모습을 확인할 수 있다.

가령 16기가 짜리 USB가 3기가로 나타난다거나,

 

아니면 8기가 짜리 USB가 아예 2MB의 크기로 나타나거나 하는 경우가 있다.

이 경우 USB를 포멧해도 크기가 그대로 2MB로 인식되는데,

파일 시스템 자체가 인식이 불가능한 상태이기 때문이다.

 

 

필자의 USB도 동일한 현상이 일어났다. 

아마도 Ubuntu용 부트 디스크로 만들었던 것 때문에 파일시스템이 바뀐 것 같다.

 

즉 파일 시스템까지 깔끔하게 밀어주고 포맷을 진행해야한다.

 

먼저 윈도우+R키를 눌러 실행창을 키고, cmd 입력하여 명령 프롬프트를 킨다.

 

 

그 후, 명령 프롬프트창에 diskpart를 입력한다.

그러면 diskpart라는 프롬프트창이 하나 더 열리게 된다.

해당 창에서 list disk를 입력한다.

 

 

그러면 위와 같이, 디스크 목록이 나타나는데, 

초기화하고자 하는 디스크는 8GB짜리 USB인 디스크2번이므로,

select disk 2를 입력한다. (숫자부분은 자신의 디스크에 맞게끔 변경)

 

 

그 후, 2 디스크가 선택한 디스크입니다. 라는 메세지가 확인되면,

clean을 입력후 엔터키를 입력한다.

 

잠깐 멈추는 현상이 있는데, 문제가 생기는 것이 아니라 원래 오래걸리는 작업이다.

(만약 엑세스 거부가 뜬다면, Powershell을 관리자 권한으로 실행하여 똑같은 작업을 수행하면 된다.)

 

 

위와 같은 메세지를 보았다면, 창을 닫고 정상적으로 돌아온 USB의 크기를 확인하면 된다.

 

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


Github Release 기능으로 고용량 파일  업로드 및 wget 파일 서버 대체

 

Github를 사용하다보면, 대용량 파일을 업로드 할 일이 많이 생긴다.

예를 들면, 머신러닝 프로젝트를 진행하던 중 pretrained weight를 올리고 싶을 때 등이 이에 해당한다.

 

단순히 LFS등을 사용하여 레포지토리에 직접 업로드를 진행해도 되겠지만,

pretrained weight등의 선택적 필요가 존재하는 자료를 저장소에 직접 커밋하고 푸시하는것은 매우 비효율적이다.

 

해당 오픈소스를 이용하고자 하는 사람들에게 너무 많은 저장 용량을 요구하게 되고, 

git clone 등의 작업에 굉장히 많은 시간을 소요하게 만들기 때문이다.

 

위와 같은 경우에는 Github의 Release 기능을 통해 Asset으로 업로드가 가능하다. Asset 방식으로 업로드 된 대용량 파일은 Git clone시에는 따라오지 않으며, 원하는 사람만 파일을 다운로드 받도록 할 수 있다.

 

또한 고유의 다운로드 링크가 형성되기 때문에 이러한 점을 활용하여 wget용 파일 호스팅 서버로 사용할 수도 있다.

추가 방법은 다음과 같다.

 

 

Github 레포지토리를 github 페이지 상에서 열면, Releases라는 부분이 보인다.

해당 부분을 클릭하면 다음과 같은 창이 뜨게 된다.

 

 

위 화면에서 Draft a new release 버튼을 클릭한 후, 

 

Tag Version엔 원하는 식별자를 사용하면 되는데, 필자의 경우에는 PyTorch Weight 파일을 올릴 것이므로, torchmodel이라는 이름으로 정하였다.

 

Attach binaries by dropping them here or selecting them. 부분의 화살표를 클릭한 후 원하는 대용량 파일을 업로드한 후, Publish release 버튼을 클릭하면 된다.

 

 

생성된 release안에는 업로드했던 대용량 파일이 Assets으로 저장되어 있으며, 

각 파일들의 다운로드 링크를 복사하여 wget과 함께 사용하면 어디서든 해당 Asset 파일을 다운로드 받을 수 있다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


 

Ubuntu 현재 메모리 사용량 확인하는 방법

 

무거운 작업을 돌리거나, Memory Exceeded Error가 발생하는 경우 메모리 사용량을 확인하고 싶은 경우가 있습니다.이러한 경우 ubuntu에서는 top 명령어를 사용하는 것이 가장 편리합니다.

 

top

 

사용법은 아주 간단합니다. 그냥 터미널에 top을 치고 엔터치시면 끝입니다.또한 nvidia-smi 처럼 watch를 통해 실시간 갱신을 해 줄 필요도 없이, 자동으로 실시간 정보를 보여줍니다.

 

 

top을 실행했을시, 위와 같이 현재 동작중인 프로세스들의 목록이 나오고 CPU와 MEMORY 사용량을 보여주게 됩니다.

정보를 충분히 얻어 종료하고 싶을 시에는 Ctrl+C 버튼을 통해 인터럽트를 발생시켜주시면 됩니다.

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


nvidia-smi 초마다 자동 갱신하기

 

머신러닝 개발등을 하다보면, 

GPU 메모리 상태와 사용량등을 보여주는 nvidia-smi 명령어를 통해 지속적으로 학습이 잘 진행되는지 확인할 일이 많다.

 

 

하지만 nvidia-smi는 불행히도 자동 갱신이 되지 않고, 

nvidia-smi라는 커맨드를 입력한 당시의 GPU 상태만 한번 프린트 해주는 커맨드이다.

그러다보니, 초단위로 GPU 상태가 어떻게 변하는지 확인하기 위해서는  nvidia-smi를 지속적으로 입력해줘야 한다.

이러한 일을 간단하게 해주는 ubuntu의 watch 기능이 존재한다.

 

## 1초마다 갱신
watch -n 1 nvidia-smi

## 5초마다 갱신
watch -n 5 nvidia-smi

 

위 명령어를 실행하게 되면, 아래와 같이 초단위로 갱신되는 nvidia-smi 결과를 확인할 수 있다.

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,