커리어 빌딩
2020-11-11
생각
- 좋은 회사란?
- 어떤 개발자가 되고싶은지?
- 이직을 성공햇는데 여기도 내 생각과 다르다면?
- SI 기업이 아닌 자체 서비스를 가진 IT 기업에서 일하고 싶다
- 기술의 중요성을 알고, 기술은 사람에게서 나오는 것을 알며, 중요함을 알기 때문에 학습과 성장을 게을리하지 않는다
- 보고 배울 선배들이 많고, 알게된 기술을 공유하는 문화가 있으며, 개선에는 리스크가 따르는 것을 알고 있어야 한다
자랑하고싶은것
자동화에 관심이 많고, 팀에서 사용하는 도구를 개발해서 조직에 기여함
- 크롬 플러그인 (단어검색/pdf 지원)
- 공공기관 재택 스케줄러 (근무요일그룹, 그룹별 재택자)
- 연계 솔루션 테스팅 툴 (상대 기관 모사)
- 프로세스 모니터링 (리눅스/윈도우)
- 운영 모니터링 툴 (java swing)
- 멀티 스레딩 이미지 리사이져 (팀 보안 증빙 이미지 일괄 작업)
- 레가시 파일 연계 대체 프로토타입 (netty 기반)
- 테스트 유틸 (JUnit 테스트 환경 활성화, JUnit3 -> 4, Annotation 기반 설정)
- 데이터(웹크롤링, 파일) 정리 모듈 등
반대로 내가 뽑고 싶은 개발자
- 테스트 케이스 작성을 잘 하는
- 중복코드를 만들지 않는
- 가독성, 성능을 생각하는
- 단순 개발자가 아닌 사용자 측면에서 생각하는
- 문제가 생겻을때 근본적인 해결책을 제시하는
- 리팩토링을 하는
- 고집이 있지만 꺽을줄도 아는
- 로우레벨관점 생각도 할 수 있는
- 좋은 개발자에대해 고민하는
- 신기술에 관심이 있는, 학습을 꾸준히 하는
SI 의 단점
- 개발 문화가 좋지 않다.
- 요구사항 변화가 빈번하게 일어나는 현실이 프로세스에 반영되지 않는다.
- 납기가 가장 중요하기 때문에, 장기적인 유지보수 시야를 가지지 않는다.
- 돌아가기만 하면 되는 것이 우선이기 때문?
- 변화에 대한 리스크를 감당하기 힘들다
- 개선이나 리팩토링을 하기 힘들다 -> 수정에 대한 리스크를 받아들이기 힘들기 때문에
- 신기술 도입을 하지 않으니, 신기술에 대한 학습이 이루어지지 않는다
경력기술서
- 기존프로젝트 사용기술 및 개인포인트
- 트러블슈팅
- 깊게파본기술
기술 정리
알고리즘 기본
- 정렬
- 버블, 삽입, 힙, 머지, 퀵, 팀
- dfs, bfs
- dynamic
- brute force
문제풀이
[Python/C++ 기본 문법 → 코드업 기초 100제 → BOJ 그리디/탐색 유형 문제 풀이 → 특정 기업 대상의 기출 문제 풀이]
- 코드업: http://codeup.kr/
- BOJ: https://www.acmicpc.net/
- 프로그래머스: https://programmers.co.kr/
ETC
- 부동소수점
- argument, parameter
- encoding
- UTF-8
- 유니코드를 encoding 하는 방식
- 가변인코딩 방식, 2byte -> 110 으로 시작, 3byte -> 1110 으로 시작
a
는 1byte,가
는 3byte
- UTF-8
MSA
- docker?
- k8s?
- service mesh
- api gateway
- message queue (kafka..)
- transaction
- Two Phase Commit
- Choreography-based SAGA
- Choreography
- Orchestration
database
- 동시성 제어(낙관/비관)
유니코드에 대해서 설명해보세요.
1바이트를 사용하는 아스키만으로는 전세계의 문자를 표현할 수 없어서 나온 코드표. 여러 코드표가 존재하며 널리 사용되는 UTF-8 은 1-4바이트 가변이다.
maven 과 gradle 의 lifecycle 에 대해서..
프로세스와 스레드의 차이점
- 프로세스
- 운영체제로부터 시스템 자원을 할당 받는 단위
- 최소 1개의 스레드가 존재
- 프로세스간 통신을 사용해야함 (파일, 파이프, 소켓통신)
- 스레드
- 프로세스 내의 실행 흐름
- stack 영역만 할당 받고 heap, data, code 영역은 공유한다.
- 멀티 프로세스
- 어떤 한 프로세스에 문제가 생겨도 다른 프로세스로 확산되지 않는다
- 멀티 프로세스 간 컨텍스트 스위칭 비용이 크다
- 멀티 스레딩
- 프로세스가 하나이므로 시스템 자원 소모가 줄어든다
- 스레드 사이의 컨텍스트 스위칭이 빠르다
- 스레드간 통신 부담이 적다
- 하지만 설계/디버깅이 까다롭고
- 자원공유로인한 동기화 문제가 생긴다
- 하나의 스레드에 문제가 생기면 다른 스레드도 영향받는다
참고