전체 95

면접 대비 멘토링

면접 대비 멘토링 국내 IT 서비스 회사 면접 준비, CS편 이런 질문은 자주 나오네? 어디까지 답변해야할까? 또는 상대적으로 남들이 준비하는 것보다 여기까지 손코딩을 준비하자 어떤 것을 공부할까? 운영체제, 자료구조, 알고리즘, 네트워크, 데이터베이스 🍎 운영체제 가장 빈번하게 Thread vs Process 프로세스를 공장에 비유한다면 공장의 일꾼을 쓰레드에 비유할 수 있다. 쓰레드는 고유한 스택을 가지며 다른 자원은 프로세스에서 공유한다. 그리고 컨텍스트 스위칭이 빠르다. 프로세스 메모리 구조 → 코드, 스택, 힙 IPC를 통해 프로세스 간의 자원 공유가 가능하다. Cache? 주기억장치에서 빈번하게 조회하는 데이터를 cache에 보관하여 조회 효율을 높인다. locality, hit rate ca..

컴퓨터과학 2023.12.12

코드 가독성 개선 with if kakao

코드 가독성 개선 with if kakao 오늘은 if 카카오에 올라온 코드 가독성 개선 영상을 보고 정리할까 한다. 프론트엔드 파트에서 나와 JS를 기준으로 설명하지만 코드를 개선함에 있어 백엔드에도 적용되는 부분이 있었다. https://youtu.be/emGLxi0LvNI?si=rWqOcyGA8HiAKQYj 영상은 주니어 프론트개발자과 함께 진행한 코드 가독성 개선을 공유한다. 가독성 개선을 위해 집중한 부분은 다음과 같다. 정확한 단어 고르기와 잘 보이는 형태로 작성해보기 하나씩 알아보자. 정확한 단어 고르기 다른 뜻을 가진 단어와 구분하기 load와 fetch의 사전적 정의는 다음과 같다. load: 가져와서 싣다 fetch: 가져오다 함수명에 load를 포함하면 가져온 후 싣는 행동을 기대할 ..

자바 2023.12.11

무방향 그래프와 서로소 집합

무방향 그래프와 서로소 집합 서로소 집합의 필요성을 이해하기 위해서 아래 문제를 읽어보자. https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 문제를 읽어보면 진실을 알고 있는 사람이 포함된 파티와 포함되지 않은 파티로 나누고 싶을 것이다. 바이러스가 전염되는 것처럼 진실을 알고 있는 사람이 포함된 파티(그래프)는 모두 진실을 알게 된다. 하지만 단절된 그래프는 전염되지 않기도 하다. 위와 같은 상황에서 서로소 집합의 개념을 적용할 수 있다. 서로 다른 파티..

알고리즘 2023.12.10

JVM 메모리 구조을 알아보고 JVM warm up을 이해하자

JVM 메모리 구조을 알아보고 JVM warm up을 이해하자 목표 JVM에 대해 알아보고 카카오 if 영상, JVM warm up을 이해한다. JVM? "Write Once, Run Anywhere(WORA)" 자바 바이트코드를 실행하는 가상머신. 자바코드는 java compiler에 의해 바이트코드(클래스 파일)로 변환되고 JVM 위에서 interprete 방식으로 실행된다. 위 그림의 backend(JVM)은 바이트코드를 어셈블리어로 바꿔야하는데 어셈블리어가 OS나 하드웨어에 종속적이다. 따라서 자바 컴파일러로 바이트코드를 만드는 부분인 compiler frontend는 OS나 하드웨어에 종속되지 않는다. JVM 구조 Runtime Data Areas JVM이 자바 바이트코드를 실행하기 위해 사용하..

자바 2023.12.07

OpenSSL을 사용해서 localhost와 https로 통신하자

OpenSSL을 사용해서 localhost와 https로 통신하자 목표spring security의 http basic을 이해하고 localhost와 https로 통신해본다. 환경스프링 부트 3.2.0> Dependencies  - spring-boot-starter-web  - spring-boot-starter-security https란?http 프로토콜을 이용한 통신에서 데이터를 암호화하여 안전하게 통신하게 한다. https를 사용하면?클라이언트가 엔드포인트를 호출하면서 받은 응답이 인증 서버에서 보낸 것이고 누구도 통신을 가로채지 않았다는 사실을 알 수 있다. 실습spring security의 http basic 이해하기hello을 응답하는 엔드포인트를 생성하자.@RestControllerpub..

컴퓨터과학 2023.11.29

11.28 알고리즘 문제풀이

코테 준비 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net import sys input = lambda: sys.stdin.readline().rstrip() N, M = map(int, input().split()) knowns = set(map(int, input().split()[1:])) party = [list(map(int, input().split()[1:])) for _ in range(M)] visited = [False] * (N+1)..

알고리즘 2023.11.28

11.27 알고리즘 문제풀이

코테 연습 기타 첫 번째 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net import sys input = lambda: sys.stdin.readline().rstrip() def multiply(b): if b == 1: return A sub_result = multiply(b//2) % C result = sub_result ** 2 return result*A if b % 2 == 1 else result A, B, C = map(int, input().split()) print(multiply(B)..

알고리즘 2023.11.27

11.23 알고리즘 문제풀이

코테 연습 BFS/DFS 첫 번째 https://www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net import sys input = lambda: sys.stdin.readline().rstrip() sys.setrecursionlimit(2001) N, M = map(int, input().split()) relation = [[] for _ in range(N)] for _ in range(M): p_1, p_2 = map(int, input().split()) relation[p_1].append(p_2) relation[p_2].append(p_1) def ..

알고리즘 2023.11.23

11.21 알고리즘 문제풀이

코테 연습 다이나믹 프로그래밍 첫 번째 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net import sys input = lambda: sys.stdin.readline().rstrip() N, K = map(int, input().split()) items = sorted([list(map(int, input().split())) for _ in range(N)], revers..

알고리즘 2023.11.21