기술 면접 프로젝트 및 자기소개
자기소개
안녕하십니까 OOO 부서에 지원 한 OOO입니다
저는 대학은 정보통신공학과를 졸업하였습니다. 대학교에서는 통신 기술을 기반으로 프로그램을 학습하였고
다양한 분야를 활용하는 것에 흥미를 가지게 되었습니다. 졸업후에 Rotc로 통신장교로 복무하며 통신병과에서 지원해주는 대학원을 입학하여 거기서 추가로 통신분야만인 아닌 Ai 분야도 프로그램을 통해 접목할 수 있으면 좋겠다고 생각을 하게되어 대학원은 지능형소프트웨어학과를 졸업하였습니다.
졸엄후에는 실무분야의 부족함을 느껴 국비지원으로 웹 서버 기반 Ai 응용 개발자 구축과정을 약 5개월간 수강하며 추가로 2달간 파이썬 데이터분석과 영상처리 프로젝트를 진행하였습니다.
학원 수료 후 OOO회사 IDC 센터에서 웹, API 개발 및 유지보수와 AI 음성서비스 플랫폼 개발을 약 1년간 하였습니다.
저는 다양한 분야를 배우고 학습하며 활용하는 분야에 관심이 있고 꾸준함이 장점인 사람입니다.
꾸준함을 예로들면 복습용 블로그 약 300건 이상 깃허브 등 꾸준함으로 배우려는 자세가 뛰어난 사람입니다.
프로젝트
A. 웹 통합 프로젝트 (관리자)
작업배경
기존 jsp로 개발된 구 관리자 웹사이트의 사용자 경험 개선과 최신 웹 기술 적용을 통해 사이트 성능을 향상시키고, 관리 용이성을 높이기 위함. 18개의 서버에 따로 배포되어 있어 사용자에게 맞는 해당 서버 주소를 알려주는 방식과 개발자의 경우 변경된 사항이 있으면, 각 해당 서버에 들어가 코드변경해야 한다는 문제점이 있어 작업을 하게 되었습니다.
사용 기술 및 사용이유
프론트엔드:
Typescript, React
백엔드:
Kotlin, Spring Boot
데이터베이스:
MariaDB , Oracle
테스트 도구:
Kotlen 기능 테스트: Kotest, JUnit
웹 테스트: Spring Test, MockMvc, Spring Security Test
코드 테스트 커버리지 측정 도구: JaCoCo,Mockito
형상관리 및 배포:
GitLab, Jenkins
서버 및 호스팅:
SSL 인증서 구현
자동 백업 및 복구 시스템
작업목표 및 성과
사용자 인터페이스(UI) 개선
페이지 로딩 시간 단축
유지보수 및 확장성 향상
CMS를 통한 콘텐츠 관리 용이성 향상
리셀러(유통) 활성화로 점진적 시장 점유율 확대
콘텐츠 관리 용이성 증가로 운영 효율 증가
A. 웹 통합 프로젝트(사용자)
작업 배경
기존 서비스 하기 위한 개인정보 확인 발송 사이트는 초기 jsp로 개발된 웹사이트로 초기 서버의 성능과 서버마다 다른 기능이 있어 18개의 서버에 따로 배포되어 있어 사용자에게 맞는 해당 서버 주소를 알려주는 방식과 개발자의 경우 변경된 사항이 있으면, 각 해당 서버에 들어가 코드변경해야 한다는 문제점이 있어 작업을 하게 되었습니다.
사용 기술 및 사용이유
springBoot : WAS 역할, 자바기반으로 사용
Node Express js : 간결하고 빠른 개발, 비동기 I/O 통해 뛰어나 확장성과 대용량 트래픽을 잘 처리할 수 있음, express-session 미들웨어를 사용하여 세션을 설정하여 로그인이나 화면 변경을 활용하여 사용
reids : 클러스터링 및 샤딩과 같은 분산 시스템 지원, 확장성 높이고 대규모 데이터 세트처리 가능, 빠른 처리 속도
mysql : 소규모 redis 정보나 휘발성 정보를 저장하는 기능으로 사용
oracle : 대규모 애플리케이션 로그 백업 등 많은 정보를 사용하기 위해 사용
이중화 작업
GW : Active, Active 이중화 구조, 트래픽 분산(부하분산), 안전성
Nginx : 서버 이중화를 구현하는 방법은 일반적으로 로드 밸런싱과 고가용성을 달성하기 위해 사용됩니다. 이를 위해 Nginx를 프록시 서버로 설정
새로운 기능
기존 기능이 추가 변경되는 경우 자료실에서 메뉴얼을 pdf 파일로 수정하고 서버에 다시 올려야 한다는 문제점이 있었습니다. 사용자는 메뉴얼을 바로 확인하지 못하고 다운로드 후 확인해야 한다는 UX적 문제점 또한 있었습니다.
이를 해결하기 위해 마크다운을 html로 변환하는 방식을 사용해서 웹 단에서 사용자가 바로 확인할 수 있는 기능과 관리자 단에서도 pdf파일을 수정할 필요없이 바로 마크다운 언어를 수정 및 업데이트 가능하게 변경함으로 일의 효율성과 디자인 측면에서 좋다고 판단하여 기능을 추가하였습니다.
어려웠던 점
프로젝트를 진행하면서 개발인력은 저 혼자이고 영업/사업/운영/개발팀들의 요구사항이 상이하며 관심의 미흡이라는 점에서 의견을 모으기가 힘들었습니다.
메일을 회신첨부 하고 여러 문서를 추가발송해도 의견이 없어 컨플루언스, 구글시트를 활용했지만 관심을 보이는 곳은 거이없고 기능이 개발이 완료되면 수정사항을 요규하는 경우가 많아 작업을 두번 세번 다시 해야한다는 점이 가장 힘들었습니다.
하루에 한번씩 각 부서의 담당자님께 전체 회신을 통해 해당 부서의 요구사항과 일일 진행사항 및 장애/불가 사항들을 꾸준히 계속 보내니 조금씩 관심을 가지는 분들이 생기며 다른 부서끼리 업무내용과 각자의 의견을 서로 공유한 결과 다시 개발하는 경우가 많이 줄어들어 정해진 시간내에 프로젝트를 무사히 완료하였습니다.
B. 이미지서버 API개발
작업 배경
선거기간 대비 kakao, rcs, mms 메세지 이미지 발송간 대량발송으로 인한 서버 과부하를 사전에 막기위해 작업
사용 기술 및 사용이유
springBoot : 자바기반으로 사용
JSch : 자바 ssh 연결 라이브러리 -> sftp(원격서버 접근 통신 규약, 서버간 데이터 전송을 암호화)위해 사용
효과
네트워크 대역폭 감소(데이터 크기가 감소하여)와 서버 부하 감소로 전송 속도향상(36%)
이미지의 효율적인 관리, 캐싱(동일 이미지가 여러 메세지에 사용되는 경우 이미지를 반복적으로 사용할 수 있어 성능이 향상된다.) 이미지 자동 삭제, 생성(파일명)등의 기능을 API 를 사용해서 한번와 관할 수 있게 되었습니다.
C. 사물인터넷과 레시피 추천 시스템
작업 배경
대학교 졸업작품으로 1인 가구가 증가하며 냉장고 내 음식물 쓰레기 배출량에 도움이 될 수 있는 재료의 상태 확인 및 다양한 레시피 추천시스템을 사물인터넷과 결합하여 만들기로 하였습니다.
사용 기술 및 사용이유
NodeJs : 다양한 모듈을 사용하기 편하다는 점과 백앤드/프론트앤드 둘 다 사용할 수 있다는 점에서 사용
Mysql : 가볍고 무료라는 점에서 장점이라고 생각하여 사용
br />아두이노 로드쉘 무게센서 : 냉장고 모형에서 재료의 양을 파악하기 위해 사용 (센서 고유 번호 - Ajax 통한 무게 데이터 실시간 요청) , 소비기한 - 식약처 참고 자동 입력 기능
레시피 추천방식
1. 아이템 기반 추천 : 무게센서와 내가 사전에 등록한 재룔를 참고하여 현제 만들 수 있는 레시피를 추천해주는 기능
2. 유저 기반 추천 : 내가 사용한 레시피와 동일한 레시피를 선택한 유저들중 가중치를 계산하여 해당 다른 유저의 내가 선택하지 않은 레시피를 추천해주는 기능
3. 컨텐츠기반 추천 : 내가 이전에 선택한 레시피를 참고하여 가중치를 더해 나의 취향을 판단하여 유사한 레시피를 추천해주는 기능
D. 범죄데이터를 통한 범죄 관련 연과성 분석
작업배경
파이썬을 활용한 데이터 분석간 공공데이터 포탈을 활용해서 우리 사회에서 갑자기 발생하는 범죄발생의 연관성을 분석하기 위해 진행
활용기술
1. numpy : NumPy는 Python에서 과학적 계산을 위한 기본적인 패키지, 크고 다차원의 배열과 행렬을 지원하며, 이러한 배열에 대한 수학적 함수 모음을 효율적으로 사용할 수 있다.
2. pandas : Pandas는 데이터 조작과 분석을 위한 강력한 Python 라이브러리. DataFrame 및 Series와 같은 데이터 구조를 제공하며, 구조화된 데이터 및 시계열 데이터 작업에 사용. Pandas는 데이터를 정리하고 변환하며 분석하는 기능을 제공한다.
3. seaborn : Seaborn은 Matplotlib을 기반으로 한 통계 데이터 시각화 라이브러리이다. Seaborn은 매력적이고 유용한 통계 그래픽을 그리기 위한 고수준 인터페이스를 제공한다. Seaborn을 사용하면 범주형 플롯, 분포 플롯, 회귀 플롯과 같은 복잡한 시각화를 쉽게 생성할 수 있다.
4. matplotlib.pyplot : Matplotlib은 Python에서 정적, 애니메이션 및 대화형 시각화를 생성하기 위한 포괄적인 라이브러리. pyplot 모듈은 MATLAB과 유사한 인터페이스를 제공하여 플롯과 시각화를 생성합니다. 선 플롯, 산점도, 히스토그램, 막대 차트 등 다양한 종류의 플롯을 생성할 수 있다.
5. matplotlib : Matplotlib은 Python에서 다양한 종류의 플롯을 생성하기 위한 다재다능한 플로팅 라이브러리. pyplot을 통해 MATLAB과 유사한 인터페이스를 제공하며, 고급 플로팅 작업을 위한 객체 지향 인터페이스도 제공한다. Matplotlib은 플롯, 히스토그램, 파워 스펙트럼, 막대 차트, 오차 차트, 산점도 등을 생성할 수 있다.
6. matplotlib.font_manager : 이 모듈은 Matplotlib에서 글꼴을 관리하는 방법을 제공한다. Matplotlib 플롯에서 텍스트의 모양을 사용자 정의하는 데 유용한 글꼴 패밀리, 스타일 및 크기와 같은 글꼴 속성에 액세스하고 조작할 수 있다.
7. folium: Folium은 지리 공간 데이터를 시각화하기 위한 Python 라이브러리. Jupyter 노트북이나 Python 스크립트 내에서 직접 대화형 지도를 생성할 수 있다. Folium은 Python 생태계의 데이터 조작 기능과 Leaflet.js 라이브러리의 매핑 기능을 기반으로 구축되었습니다. 대화형 지도, 마커, 팝업, 분역도, 벡터 레이어 등을 추가하여 지리 데이터를 효과적으로 시각화할 수 있다
활용 데이터
1. 대검찰청_범죄발생지역
2. 대검찰청_범죄발생장송
]3. 대검찰청_범죄발생시간
4. 대검찰청_범죄발생요일
5. 경찰청_범지가 생활정도
6. 경찰청_혼인관계 및 부모관계
7. 경찰청_5대 범죄 발생건수
8. 서울시 통계인_자치구 년도별 CCTV
E. 왓챠피디아 클론코딩
작업 배경
국비지원 프로젝트로 다양한 UI를 통한 프론트간 개발의 흥미와 사용자 취향을 통한 콘텐츠 추천 기능이 있어 개발에 흥미가 생기게 되어 국비지원 학원에서 개발하게되었습니다.
사용 기술
Spring Boot : 타임리프를 사용하여 프론트 단을 개발하였음
Selenium : 기존 사이트에서 데이터를 크롤링하여 많은 양의 데이터를 활용
추천기능
콘텐츠 추천 기능은 사용자의 평가를 기반으로 한 내용으로 해당 장르와 배우의 수를 평점에 따라 가중치를 주고, 사용자가 평가하지 않은 콘텐츠 중에 해당 값과 유사한 것을 추천해주는 기능은 사용자에게 다양한 선택지를 제공