반응형

STUDY 40

3장. 시스템 설계 면접 공략법- 가상 면접 사례로 배우는 대규모 시스템 설계 기초

시스템 설계 면접을 하는 이유는 설계 과정에서 내린 결정의 이유와 면접관의 피드백을 어떠한 방식으로 처리할 것인지를 볼 수 있기 때문이다.  이번 장에서는 시스템 설계 면접을 보게 되었을 때의 꿀팁(4단계)을 정리했다. 1단계 문제 이해 및 설계 범위 확정설계 해야하는 범위를 명확하게 해야한다. 면접관에게 질문을 하면서 범위를 구체화 시킨다. 예를 들어, 어떤 기능을 만들어야 하는지, 사용자는 어느 정도인지 등등 시스템을 혼자 추상화하여 대답하지 말자.  2단계 개략적인 설계안 제시 및 동의 구하기설계안에 대한 청사진을 제시하고 면접관에게 의견을 구한다. 그리고 핵심 종이나 화이트보드에 그려가며 얘기하자. 이 설계안이 시스템 규모에 관계 된 제약사항을 커버할 수 있는지 개략적으로 계산해 보자.  3단계 ..

STUDY/책 2024.07.31

2장. 개략적인 규모 추정- 가상 면접 사례로 배우는 대규모 시스템 설계 기초

시스템 용량이나 성능 개선을 위해서 아래의 수치를 기본적으로 숙지하고 있어야 한다.  2의 제곱수최소 단위는 1바이트고, 8비트로 구성된다. 데이터 볼륨의 단위를 2의 제곱수로 표현하면 아래의 테이블과 같다. 2의 x 제곱근사치이름축약형101천1킬로바이트1KB201백만1메가바이트1MB3010억1기가바이트1GB401조1테라바이트1TB5010001페타바이트1PB 응답 지연 값아래의 표는 통상적인 컴퓨터에서 구현된 연산의 응답 지연 값이다. 이 수치를 기반으로 컴픀터 연산들의 처리 속도가 어드 정도인지 짐작 할 수 있다. 연산명시간L1 캐시 참조0.5ns분기 예측 오류 (branch mispredict)5nsL2 캐시 참조7ns뮤텍스(mutex) 락/언락100ns주 메모리 참조100nsZippy로 1KB 압축..

STUDY/책 2024.07.31

1장. 사용자 수에 따른 규모 확장성 - 가상 면접 사례로 배우는 대규모 시스템 설계 기초

사용자가 많지 않은 경우에는 단일 서버로 운영할 수 있지만, 사용자가 많아지면 서버에 부하가 쉽게 가므로 위와 같은 시스템으로 설계해야한다.  각각의 컴포넌트가 어떤 역할을 하는지 어떤 흐름도를 갖는지 정리하고자 한다.  클라이언트(웹이나 모바일)에서 API url을 통해 API를 호출한다. 이때, 가장 먼저 CDN을 통해 API url을 로드 벨랜서 ip로 바꿔 호출해 준다. 로드 밸랜서는 서버의 부하를 분산 시키는 역할을 한다. 위에서 말한 단일 서버의 경우, 로드 밸랜서를 쓸 필요가 없다. 왜냐면 서버가 한개인데, 분산 시켜봤자 갈 곳은 한 곳 뿐이니까.로드 밸랜서가 각 서버와 private IP로 통신한다. 이런 면에서는 로드밸런서가 proxy 역할을 하는 것 같다.  로드 밸런서가 task를 분..

STUDY/책 2024.07.30

[Kotlin] string에서 사용할 수 있는 기본 함수

✏️ String -> Char array 로 변환 알고리즘을 풀다보면 string을 글자 배열로 만들어야 할 때가 있다. 다른 언어에서는 toChar()로 변환할 수 있어서 적용해봤는데, toChar() 함수는 deprecate됐다. 공식문서에서 처럼 toChar() 대신 toInt().toChar()로 사용해도 되지만 아래 예제처럼 toCharArray()를 사용해도 된다. var name = "monkey" var name_char_arr = name.toCharArray() ✏️ index 찾기 글자 내에 특정 글자의 index를 찾아야할 경우 아래의 함수를 사용할 수 있다. var input_string = "my name is Tom. my dog name is Tom too." var ind..

STUDY 2024.04.22

머신러닝 분류

머신러닝은 크게 3가지로 분류할 수 있다. 지도 학습 비지도 학습 강화 학습 그리고 딥러닝은 신경망을 베이스로 한 구조로 더 많은 학습변수를 사용할 수 있고 그 덕분에 비선형의 복잡한 문제를 다룰 수 있다. 지도학습(Supervised Learning) 지도학습은 레이블 있는 데이터로 학습하는 경우를 말한다. 예를 들어, 강아지 사진들과 강아지라는 값을 페어링한 데이터를 학습하는 것이다. 지도학습은 예측하거나 분류를 하기 위해 사용된다. 대표적인 지도학습 모델은 k NN 모델, 서포트 벡터 머신, 디시즌 트리이다. k NN 모델 학습 데이터에서 d개의 특성을 추출 한 후, d차원 공간에 위치 시킨다. 그리고 분류되지 않은 데이터가 새로 입력되면 d차원의 공간에 위치시킨 후 가까이 있는 k개의 데이터를 추..

[프로그래머스] 테이블 해시 함수 (javascript)

https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 풀기 위해서 크게 3단계 과정이 필요하다. 주어진 data 정렬하기 row_begin ~ row_end 사이 행의 튜플을 각 행의 인덱스로 나눠 그 나머지 값을 더한다. 각 행 누적값을 xor 연산으로 더한다. 첫번째 과정을 구현한 함수가 sortData이다. 문제에서 주어진 방법대로 col번째 컬럼 기준으로 오름차순하고, 만약 값이 같을 경우에는 key값인 첫번째 컬럼 기준으로 내림..

STUDY/알고리즘 2023.09.10

[프로그래머스] 당구 연습 (javascript)

https://school.programmers.co.kr/learn/courses/30/lessons/169198 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제에서의 당구 공은 입사각과 반사각이 같다. 따라서 원쿠션 포인트 기점으로 시작 공과의 기울기와 타겟 공과의 기울기 크키는 같고 방향만 다르다. 그래서 둘 중 하나의 공의 위치를 대칭 이동하면 두 공의 거리 같과 공이 이동한 거리와 같다. function solution(m, n, startX, startY, balls) { const start = [startX,startY]; const..

STUDY/알고리즘 2023.09.10

[프로그래머스] 무인도 여행 (javascript)

이 문제는 재귀식을 이용하여 해결했다. 현재 위치에서 위,아래,양옆으로 이동가능 하기 때문에 현재 위치를 이동해보며 무인도 경계까지 값을 더하는 함수를 만들었다. 재귀함수에서 break point를 먼저 정의 하고 재귀함수를 호출 부분을 추가로 구현했다. const map_arr = []; function solution(maps) { var answer = []; maps.forEach(d=>map_arr.push([...d])) console.log(map_arr); for(i=0; ia-b); } function calculateIsland(i, j){ if(i=map_arr[0].length ){ return 0; } if(map_arr[i][j] === 'X'){ return 0; } const..

STUDY/알고리즘 2023.09.08

[프로그래머스] 개인정보 수집 유효기간 (javascript)

https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(today, terms, privacies) { var answer = []; const todayAsNumber = Number(today.replaceAll('.','')); console.log(todayAsNumber); const finishDates = []; const termMap = new Map(); //map으로 보관기간 정리 for(let t..

STUDY/알고리즘 2023.09.03

텐서플로우 리눅스에서 설치하기

가상 환경을 만들어주고 (버전이랑 패키지 관리 가능하기 때문) 가상 환경을 activate 해준다. python3 -m venv ./study_tensorflow source study_tensorflow/bin/activate 그리고 tensorflow를 설치해 준다. pip install nvidia-cudnn-cu11==8.6.0.163 tensorflow==2.13.* 또는 # Requires the latest pip pip install --upgrade pip # Current stable release for CPU and GPU pip install tensorflow # Or try the preview build (unstable) pip install tf-nightly 그리고 나는..

STUDY 2023.08.16
반응형