SPK / 전자공학과 / 학점 3.32 / 토익스피킹: 160/AL / 스타트업 서비스 개발 인턴 10개월 / 컴퓨터활용능력 1급, SQLD, ADsP
보고있는 합격자소서 참고해서 내 자소서 작성하기
1. Why LG CNS
소프트웨어는 하드웨어나 플랫폼 서비스의 뒤에서 항상 함께하여 그 가치를 완성하는 중요한 열쇠라고 생각합니다.
저는 대학 입학 후 처음으로 C언어를 통해 프로그래밍을 경험하며 생각이 실제로 동작할 수 있게 표현하는 법을 배울 수 있었고, 군 복학 후에는 개발에 대한 흥미가 생겨 교내 스타트업 인턴 프로그램을 통해 고등학생 수학 성적 관리 서비스에 대한 API 및 앱 개발을 담당하기도 했습니다. 이후에도 학부 과정에서 프로그래밍을 활용한 최적화 과목을 수강하거나, 강화학습을 적용한 두 바퀴 밸런싱 로봇 프로젝트를 진행하며 문제 해결 과정에서 보람을 느낄 수 있었습니다.
지금까지의 경험을 통해 쌓아온 저의 소프트웨어적인 역량은 LG CNS와 잘 맞을 것이라 생각합니다. 특정 분야에 국한되지 않고, 다양한 영역에서 사람들에게 편의성을 제공하고 있는 LC CNS는 소프트웨어를 통해 세상에 혁신을 가져다주는 기업이라고 생각하고 있으며, 저 역시 이러한 흐름에 함께 하고 싶습니다.
2. 경험
학부 졸업 이후, 저는 임베디드 SW와 관련된 경험을 쌓기 위해 국비 교육 과정을 수료했습니다. 해당 교육을 통해 이론적으로 부족한 부분을 채움과 동시에 팀 프로젝트를 진행하며 필요한 경험을 쌓을 수 있었습니다. 저희 팀은 ‘On-Device 기반 차량용 비서 시스템 개발’이라는 주제를 선정하여 클라우드 서버 없이 On-Board 환경에서의 음성인식 기반 동작 제어를 목표로 설정했습니다. 타겟 시스템의 SoC는 Cortex-A 기반 클러스터와 Cortex-R 기반 MCU로 구성되어 있어 여러 어플리케이션을 목적에 맞게 응용할 수 있었습니다. 우선, 팀원들과 협의를 통해 프로젝트에 필요한 영역을 각각 음성인식, 코어 간 IPC 통신, 그리고 RTOS 제어 파트로 나누었고, 저는 음성인식 파트를 담당했습니다. 당시, 보드의 Main Cluster가 활용할 수 있는 DRAM 용량은 2GB 수준으로 스펙이 제한되어 있었고, 이러한 임베디드 시스템에서 음성인식 기능의 실시간성과 정확성을 동시에 확보하는 것은 중요한 포인트였습니다. 저는 먼저, 음성인식 시스템의 개발 방향을 정하기 위해 한국어 번역이 가능하면서 용량을 작게 조정할 수 있는 vosk 기반의 STT 모델을 선택하였습니다. 이후, 사람의 음성인지 아닌지를 판별하는 vad 기능에 band-pass filter를 적용함으로써 사람의 음역대에 맞춘 음성감지 정확도를 높일 수 있었습니다. 또한, 음성 번역 과정에서 방대한 한국어 딕셔너리가 아닌, 정해진 몇 가지 명령어 세트에 가중치를 두어 탐색하도록 설정함으로써 반응성을 높일 수 있었고, 번역된 결과를 다시 한번 점수화하여 특정 점수 이상의 명령어에 대해서만 동작하도록 구현하여 실시간성과 정확성의 트레이드 오프를 해결할 수 있었습니다. 이후 프로젝트 내 각자 역할을 통합해 나가며 프로젝트를 마무리한 결과, 저희 팀은 최우수 프로젝트상을 수상할 수 있었습니다.
3. 학습
과목명 : C programming / 취득학점(3학점): B+
과목명 : 전자공학실험1 / 취득학점(2학점): A0
과목명 : 정보처리연습 / 취득학점(3학점): A-
과목명 : 응용프로그래밍 / 취득학점(3학점): B0
과목명 : 전자공학실험2 / 취득학점(2학점): A-
과목명 : 강화학습개론 / 취득학점(3학점): A-
과목명 : 최적화개론 / 취득학점(3학점): A0
과목명 : 데이터구조 / 취득학점(3학점): B+
과목명 : 설계과제I / 취득학점(1학점): A0
과목명 : 정보시스템 / 취득학점(3학점): A+
과목명 : 설계과제II / 취득학점(2학점): A0
과목명 : 데이터마이닝 / 취득학점(3학점): B+
4. 개발 프로젝트 경험
저는 현재 재직 중인 회사에서 IP 드라이버 관련 업무를 담당하고 있습니다. 최근 자사 SoC에 처음으로 도입하는 Arm 사의 IP 활용 방안에 대한 검토가 필요했습니다. Virtual Machine의 일부 디바이스들은 퍼포먼스를 높이기 위해 메모리 주소를 하드웨어적으로 올바르게 번역해주는 역할을 수행하는 IP였습니다. 해당 동작을 검증하기 위해 저는 Technical Reference Manual과 오픈소스에서 사용하는 해당 IP의 드라이버, 그리고 리눅스 커널에서의 드라이버를 참고하여 검증 작업을 진행했고, 이후 새로 도입하는 자사 환경에 C언어 기반의 드라이버 포팅 작업까지 완료했습니다.
초기에는 Trace32 디버거를 통해 configuration 레지스터 값 변경에 따른 디바이스 접근 동작을 확인했고, 이후 적용할 구조에 맞게 모든 드라이버 포팅을 진행했습니다. 포팅 과정에서 여러 디바이스의 테이블 매핑에 문제가 발생하기도 했습니다. 몇몇 디바이스는 제대로 동작했지만, 나머지 디바이스에서는 fault를 발생시키는 현상이 혼란스러웠습니다.
여러 팀들과 함께 협업하여 테스트 동작을 디버깅한 결과, 문제의 원인이 포팅된 드라이버에 있음을 확인할 수 있었습니다. 포팅 과정에서 config 값이 실제 타겟 값보다 1만큼 작게 하드코딩되어 대부분의 디바이스에서 테이블 워크에 영향을 받으며 제대로 동작하지 않았던 것입니다.
이와 같은 방식으로, 지속적인 협업을 통해 테스트 동작과 발생하는 문제들을 해결해가며 드라이버 포팅을 마무리할 수 있었고, 이를 통해 향후 설계할 SoC에서의 운영 시나리오에 향상된 성능에 대한 선택지를 추가할 수 있었습니다.