잡다한것들이란 누구나 다 알고있는 기본
- array, list, stack, string, dfs, bfs
눈감고 서술 할줄 몰라도 그냥 자연적으로 쓰는
- tree, dynamic programming
머신러닝/통계 재외하고 벡엔드 프론트 ETL 개발에서 최근에 나온것들에서
1. queue
큐는 최근 나오는 마이크로 서비스 아키텍처 개발할때 필수로 알아야됨
position queue, dead letter queue, priority queue
사용 (aws 나 라이브러리) 넘어서 전략적으로 어디서 어떻게 써야되는지 알고있어야됨
2. trie
이건 특히 프론트엔드에서 자주나옴. 특히 성능 중점두는 어플 개발할때 렌더링엔진 튜닝 할때 나오고
자동입력 컴포넌트 개발할때도 나오고 등등
3. graph
이건 그레프관련 알고리즘을 내가 직접 쓰는 능력은 아닌대 그래프의 개념은 통찰하고 있는 능력은 필요함
특히 그레프 디비, 그레프큐엘에서 그래프에 대해서 아는놈 vs 아닌놈에 차이가 확연히 들어나기때문임
4. 캐싱
key/val, LRU, LFU, bloom filter
그리고 이걸 실제로 1 billion page views a day 를 헨들링 할때 어디서 어디에 들어가고 그 프로그램 특성상 어떤게 적절한지 같은 통찰력은 필요함
5. 그냥 간단한 big O 개념
코드를 봤을때 obvious 하게 너무 비성능적으로 작성한걸 알아보는 능력 수준 정도?
중간에 예/아니오 컨디션같은거 넣어서 미리 스탑하고 뭐이런 간단한 수준만 알면됨
어짜피 빠르게 재품 개발하고 돈 조금 더내서 케싱 레이어 붙히고 빨리 움직이는게 작은 빅오에 매달려서 시간 보내는거보다 훨신 경재적임
클라우드가 너무 비효율적으로만 안쓰면 별로 안비싸니 가능한 예기임
6. 기본 자료구조 당연하게 알아야되고
특히 hashmap
7. rate limiting algorithms
leaky bucket, sliding window 근데 이것 마저 클라우드나 트레픽에서 해주니 알피료는없음. 회사에서 고집부려서 손수 쓰자고 하지않는이상
이정도만 알면 되는것같음 그냥 술먹으면서 생각해보면
코딩 인터뷰 나오는 무슨 regular expression 알고리즘 DP 로 써봐라 이런거 절대 안나옴 실무에서
그냥 map deque 이거 두개만 알아도 개발하는데 문제 없음 이 두개 조차도 몰라서 문제인 애들이 문제임..