특별한 상황에서의 면접

3일차 게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 p.21 ~ p. 38 내용 정리 3. 특별한 상황에서의 면접 경력자 시스템 디자인 혹은 설계와 관련된 문제, 이력서에 관련된 질문은 중요하게 다뤄진다. 또한 경험을 내세울만한 질문도 충분히 만족스러운 답변을 해야 한다. 테스터 혹은 SDET SDET(Software Design Engineers in Test)는 테스트를 위한 코드를 작성한다. 따라서 코딩과 테스트 둘 다 잘해야 한다. 다음 절차를 추천한다. 테스트에 관련된 핵심적 질문 대비 : 펜을 어떻게 테스트할것인가? 코딩 관련 질문 대비 : 일반적인 개발자보단 덜하더라도 코딩 준비해야한다. 코딩 결과를 테스트 하는 훈련 : 테스트 해볼 줄 알아야 한다. 바람직한 경력을 위한 조언 입사를 위한 전략으로 SDET를 고르는 것은 좋지 않다. 개발직 전환이 매우 힘들기 때문이다. ...

2023년 9월 6일 · 2 분 · 배준수

5. 확률적 분석과 랜덤화된 알고리즘

5. 확률적 분석과 랜덤화된 알고리즘 5.1 고용 문제 직업 소개소에서 면접자를 추천 받으려면 적은 소개료를 지불해야 한다. 소개받아 면담한 후 일을 잘할 수 있는 사람이면 해고하고 새로운 지원자를 고용하면 된다. 고용하면 많은 소개료를 지불해야 한다. 이 떄 비용을 알고자 한다. Hire-ASSISTANT(n) 1 2 3 4 5 6 best = 0 // 0번은 가장 낮은 점수를 갖는 가상의 지원자 for i = 1 to n 지원자 i를 면접한다. if 지원자 i가 지원자 best보다 나은가? best = i 지원자 i를 고용한다. 위 의사코드가 비용을 의미한다. ...

2023년 9월 5일 · 3 분 · 배준수

동시성(2)

책너두 5기 26일차 로버트 C. 마틴의 클린코드 p. 230~ p.237 내용정리 13.동시성 난관 동시성을 구현하기 어려운 이유? 예시 1 2 3 4 5 6 7 public class X { private int lastIdUsed; public int getNextId() { return ++lastIdUsed; } } 인스턴스 X를 생성하고, lastIdUsed 필드를 42로 설정한 다음, 두 스레드가 해당 인스턴스를 공유한다. 두 스레드가 getNextId();를 호출한다고 가정헀을때 결과는? ...

2023년 9월 5일 · 4 분 · 배준수

면접 과정

2일차 게일 라크만 맥도웰의 코딩 인터뷰 완전 분석 p.1 ~ p. 20 내용 정리 1. 면접 과정 면접에서 알고리즘과 코딩은 아주 큰 부분을 차지한다. 면접관은 우리가 지금껏 보지 못했던 알고리즘 문제를 풀어내는 능력을 평가하고 싶어 한다. 면접은 다음을 통해 평가된다. 분석 능력 : 문제를 푸는 데 받은 도움, 최적화 정도, 소요 시간, 설계시 고려한 다양한 방법 코딩 능력 : 알고리즘을 적절한 코드로 표현, 깔끔한 구성, 에러 대비, 스타일 기술적 지식 및 컴퓨터 과학 기본 : 컴퓨터 과학에 대한 기본기 경험 : 기술적 결정, 프로젝트에 대한 경험, 진취성과 결단성 등 문화 / 의사 소통 능력 : 지원자의 성격과 회사의 가치, 면접관과 의사소통 회사마다 다른 비중을 가진다. 일반적인 알고리즘 문제 풀이는 위 3가지가 중요하다. ...

2023년 9월 5일 · 3 분 · 배준수

소개 DBMS 선택하기

책너두 6기 2일차 백은빈, 이성욱의 Real MySQL8.0 1권 p.1 ~ p.24 2일차 01 소개 DBMS 선택의 기준 : 자기가 가장 잘 활용 할 수 있는 DBMS여야 하지만, 안정성 성능과 기능 커뮤니티나 인지도 순서로 고려할 수 있다. 02 설치와 설정 2.1 MySQL 서버 설치 설치 부분은 이미 이전에 다른 블로그를 보고 설치했기 때문에 넘어갔다. 2.2 MySQL 서버의 시작과 종료 윈도우는 MySQL Workbench라는 GUI를 통해 쉽게 제어할 수 있다. 책의 내용은 리눅스 운영체제의 내용을 다루고 있어 넘어갔다. ...

2023년 9월 5일 · 2 분 · 배준수

MySQL 공부 시작

책너두 6기 1일차 책 : Real MySQL 1권 주제 MySQL에 관한 모든 것. 독서 방법 읽고 ‘그렇구나’가 아니라, 적용해보고 따라해보고 손으로 익히자. 책너두에 임하는 다짐 그동안 내가 사용한 데이터베이스는 MongoDB 뿐이었다. 취준을 하다보면 느끼겠지만 SQL 관련하여 코딩테스트를 진행하기도 하고, 기술스택으로도 많이 요구한다. 진작에 공부했어야 했지만 미루다가 책너두를 통해 할 수 있는 원동력을 얻었다. 꼭 완주하자.

2023년 9월 4일 · 1 분 · 배준수

동시성(1)

책너두 5기 25일차 로버트 C. 마틴의 클린코드 p. 226~ p.229 내용 정리 13. 동시성 동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 결합(coupling)을 없애는 전략이다. **무엇(what)**과 **언제(when)**을 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 밀접하다. **무엇(what)**과 **언제(when)**를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다. 따라서 시스템을 이해하기 쉽고 문제를 분리하기도 쉽다. 예시: 서블릿(Servlet) 서블릿은 웹 혹은 EJB 컨테이너 아래서 돌아가는데 컨테이너는 동시성을 부분적으로 관리한다. 웹 요청이 들어올 때마다 웹 서버는 비동기식으로 서블릿을 실행한다. 원칙적으로 각 서블릿 스레드는 다른 서블릿 스레드와 무관하게 자신만의 세상에서 돌아간다. 서블릿 프로그래머는 동시성을 정확히 구현하도록 각별한 주의와 노력을 기울여야 한다. 그럼에도 서블릿 모델이 제공하는 구조적 이점은 아주 크다. ...

2023년 9월 4일 · 2 분 · 배준수

파이썬 알고리즘 : 트리의 지름, 운동, 짐 챙기는 숌

2023년 9월 4일 알고리즘 문제풀이 문제 1 백준 1167 문제 링크 1차 시도 나의 생각 입력값을 list로 받은 후 가장 앞인 0번 index는 어떤 정점의 정보인지를 나타낸다고 생각하였고 그 이후 둘 씩 짝지어서 도착 정점과 거리로 설정하였다. 이를 바탕으로 인접리스트를 만들고 index를 2씩 뛰어넘어 -1이 나오면 더이상 정보가 없으므로 다음 줄로 넘어갔다. 이후에는 두 점간의 거리를 bfs를 통해 탐색하도록 하였다. 모든 점간의 거리를 찾아 최댓값을 도출하였다. 하지만 메모리,시간초과가 뜬다… 다찾아보면 안되나보다. ...

2023년 9월 4일 · 7 분 · 배준수

파이썬 알고리즘 : 임계경로, 단지번호붙이기, 케빈 베이컨의 6단계 법칙

2023년 9월 2일 알고리즘 문제풀이 문제 1 백준 1948 문제 링크 1차 시도 나의 생각 위상정렬을 이용해 풀고자 하였다. 단 시작지점은 진입차수가 0인 것이 문제의 조건이므로 큐에 시작도시를 넣고 반복하였다. 결국 도착지에 갈때까지 비용을 계속 더해주고, 간선을 이용할 떄마다 카운트 해주었다. 예제를 입력했을 떄 결과값이 실제 정답보다 크게 나오기도 했고, 경로 탐색이 내가 예상한대로 되지 않았다. 아무래도 문제를 제대로 이해하지 못한채 그냥 위상정렬만 적용해서 해결하지 못하고 있는것 같다. 애초에 이 문제를 왜 위상정렬로 풀어야 하는지도 모르겠다.. 공부해봐야겠다. ...

2023년 9월 2일 · 7 분 · 배준수

파이썬 알고리즘 : 줄 세우기, 장난감 조립, 그래프 수정

2023년 9월 1일 알고리즘 문제풀이 문제 1 백준 2252 문제 링크 1차 시도 위상정렬에 대한 개념을 다 까먹어서 어떻게 풀지 감이 안왔다.. 해서 위상정렬을 공부해보고 풀었다. 위상 정렬(topological sorting)은 유향 그래프의 꼭짓점들을 변의 방향을 거스르지 않도록 나열하는 것을 의미한다. 쉽게 말하면 순서가 정해져있는 작업을 차례대로 수행할 때 순서를 결정하는 방법이다. 이번 문제도 어떤 학생들은 순서에 맞게 배열해야 하니 위상 정렬 문제로 풀 수있다. 위상 정렬의 과정은 다음과 같다. 방향이 있는 간선들의 정보가 주어지면 인접그래프를 만든다. 정점의 번호를 index로 하는 배열을 만든 후 해당 정점이 도착지가 되는 간선이 있을 떄마다 정점의 값을 1 올린다. 이 정점의 값이 진입차수를 의미한다. 해당 정점으로 진입하는 간선이 몇개인지를 나타내는 것이다. 위 과정이 완료되면 값이 0인 정점은 큐에 삽입한다. 큐에서 한 정점씩 꺼내어 해당 정점과 연결된 간선을 모두 제거한다. 이 과정에서 값이 0이 된 정점은 큐에 삽입하고 과정을 반복한다. 큐에서 꺼내지는 순서가 작업의 순서이다. 이 문제에 대입해보면, 문제의 입력값에서 순서가 있는 학생이 주어진다. 학생을 정점이라 생각하고 배열의 선후관계를 간선의 방향이라고 생각하면 된다. 코드는 다음과 같다. ...

2023년 9월 1일 · 5 분 · 배준수