전체 글
[Interview] 직접 받은 대기업 / 스타트업 기술 면접 질문
지금까지 취업을 하면서 당연하게도 많은 기업에서 인터뷰를 진행하였고, 다양한 질문을 받았다. 이 질문들은 새롭고 깊게 생각해봐야 하는 질문도 있었으나, 예상 가능하고 미리 준비하여 답할 수 있는 질문들이 대부분이였다. 그렇기에 새로운 직장을 위해 준비하는 분들에게는 질문들을 상기하는 기회를, 처음으로 직장을 준비하는 분들에게는 '이것만은 꼭 알고 가자'라는 부분을 알려주기 위해 해당 포스팅을 작성했다. 사실 본인 면접 회고록이라고 볼 수 있다. 더해서 제가 답안은 꾸준히 포스팅 예정이다. 참고로 기술 스택은 대부분 프론트엔드 직무로 javascript와 react 위주이다. 1. 코딩 테스트 기반 알고리즘 질문 (문제를 푼 방법, 해당 방법에 관한 질문) 대부분의 대기업은 코딩테스트를 진행하고, 코딩 테..
cookie와 session
cookie와 session HTTP는 비상태성(Stateless) 프로토콜로 상태 정보를 유지하지 않는다. 연결을 유지하지 않기 때문에 리소스 낭비가 줄어드는 것은 큰 장점이지만 통신할 때마다 매번 연결 설정을 해야 하며, 이전 요청과 현재 요청이 같은 사용자의 요청인지 알 수 없다는 단점이 존재한다. 쿠키와 세션을 통해서 HTTP의 Stateless한 문제점을 해결할 수 있다. cookie와 session 비교 [저장 위치] 쿠키 : 클라인어트의 웹 브라우저가 지정하는 메모리 or 하드 디스크 세션 : 서버의 메모리 [만료 시점] 쿠키 : 저장할 때, expires 속성을 정의하여 무효화시키면 삭제될 날짜를 지정할 수 있다. 세션 : 클라이언트가 로그아웃하거나 설정 시간 동안 반응이 없으면 무효화되기..
REST & RESTful
REST & RESTful이란? REST란 Representational State Transfer의 약자로 웹의 장점을 최대한 활용할 수 있는 Client와 Server 간 통신 방식 중 하나이다. 설계 기본 규칙으로 HTTP URI를 통해 자원을 명시하고 HTTP method(GET, POST, PUT, DELETE)를 통해 자원을 처리하도록 설계된 아키텍처이다. RESTful은 REST라는 아키텍처를 구현하는 웹 서비스를 나타내는 것으로 REST 원리를 따르는 시스템을 RESTful이라는 용어로 지칭한다. HTTP란? HyperText Transfer Protocal의 약자로써 인터넷 통신을 위해 사용되는 프로토콜이다. HTTP 동작 Client가 브라우저를 통해 URI을 통해 특정 요청(Reque..
[백준] 1072번 Z _ Node_js
문제 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 문제 풀이 해당 문제는 규칙을 찾아 해당 규칙을 통해 답을 구하는 수학 문제이다. 숫자의 진행 방향은 Z모양으로 2^n X 2^n 단위로 진행이 된다. 그렇기에 여기서 규칙을 찾을 수 있다. 아래 그림을 보자. Z모양의 크기는 2^2k만큼 증가하는데 이를 x축과 y축 별로 증가하는지 작성해보았다. 각 x축은 2^2x, y축은 2^(1+2y)만큼 씩 증가한다. 그렇기에 시작점을 수학적..
[백준] 1003번 피보나치 함수 _ Node.js
문제 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제풀이 해당 문제를 조금 잘라서 나타냈는데 결국 피보나치 수열을 진행하면서 f(0)과 f(1)을 각 몇 번씩 사용하는지 출력하는 문제이다. 해당 문제는 피보나치 수열을 구하는 DP문제에서 값을 저장하는 것이 아닌 f(0)과 f(1)을 사용하는 횟수를 저장하면 된다. 제출 코드 const fs = require('fs'); const stdin = (process.platform === 'linux'? fs.readFileSync('/dev/stdin').toString() : `2 6 ..
대칭키와 암호화
대칭키 암호화 암호화에 사용되는 키와 복호화에 사용되는 키가 동일한 암호화 기법이다. 대칭키 암호 방식으로 암호화한 정보를 누군가에게 보낼 때, 암호키도 함께 보내야 한다. 암호키 자체는 암호화가 되지 않은 평문으로 분실하거나 타인에게 노출되면 보안에 매우 취약할 수 있다. 키 전달 및 관리에 어려움이 있지만, 대칭키 암호화 방식은 암호화 연산 속도가 빠르기 때문에 효율적인 암호 시스템을 구축할 수 있다는 장점이 있다. 블록 암호화, 스트림 암호화가 있다. 공개키 암호화 대칭키 암호화 방식의 키 전달의 취약점을 해결하기 위해 나온 방식이다. 암호화에 사용하는 키와 복호화에 사용하는 키를 분리했다. 따라서 비대칭키 암호화라고도 부른다. 자신이 가지고 있는 고유한 암호키(개인키 혹은 비밀키)로만 복호화할 수..