목록전체 글 (138)
나의 개발일지(김지헌)
32. TCP 3 way handshake란 무엇인지 설명해주실 수 있을까요? TCP 3 way handshake TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기 전에 한 쪽이 다른 쪽이 준비되었다는 것을 알 수 있도록 한다. 즉, TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. TCP의 3-way Handshaking 과정 [STEP 1][STEP 2][STEP 3]위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어..
23. 모든 요소에 인덱스를 걸지 않는 이유는 무엇일까요? 인덱스 인덱스는 테이블에서 원하는 데이터를 쉽고 빠르게 찾기 위해 사용하는데 테이블의 특정 컬럼에 한개 이상을 주면 인덱스 테이블이 따로 만들어진다. 인덱스 테이블에는 원래 테이블의 값과 rowId를 저장하는데 데이터를 갱신할 때 원본테이블은 물론 인덱스 테이블도 데이터를 갱신시켜야 하기 때문에 속도가 느려진다. 그래서 모든 요소에 인덱스를 사용하지 않는다. 24. 이분탐색이 무엇이고 시간복잡도는 어떻게 되며 그 이유는 무엇인가요? 이분탐색(Binary Search):전제 조건 오름차순 또는 내림차순으로 정렬시간복잡도가 매우 줄어든다. 10만개의 데이터를 가진 DB에서 순차 탐색과 이분 탐색의 Worst case를 비교하면 순차 탐색은 10만번의..
오늘도 기술면접 준비를 했다 생각 보다 오래 걸리고 이론을 알기가 쉽지않은거 같다 더보기 Promise란 무엇인지 설명해주실 수 있을까요? 프로미스란? 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.이행 fulfilled : 연산이 성공적으로 완료됨. 거부 rejected : 연산이 실패함. 대기 pending : 이행하지도, 거부하지도 않은 초기 상태. 9. Hoisting이란 무엇인지 설명해주실 수 있을까요? 자바스크립트 런타임시 선언해둔 변수와 함수를 가져가서 메모리에 기억을 해두고 호출시 실행해주는것 즉 함수가 실행되기 전에 안에 있는 변수들을 범위의 최 상단으로 끌어올리는 개념 10. 개발자로서 본인의 장단점과 근거가 되는 경험을 말씀해주실 수 있을까요?(협업 능..
오늘은 기술 면접을 질문 들을 준비해서 정리하는 시간을 가졌다. 솔직히 아직 개념이 잘 안잡히는거 같다. 더보기 프레임워크 : 개바르이 다양한 기능을 통합한 공통적인 개발환경 라이브러리 : 공통으로 사용될 수 있는 특별 기능들의 집합 시간복잡도와 공간복잡도가 무엇인지 설명해주실 수 있을까요? 시간 복잡도(Time Complexity) : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지를 의미 (알고리즘을 위해 필요한 연산의 횟수) 시간 복잡도를 표현할 때는 빅오(Big-O) 표기법을 사용한다. 빅오 표기법이란 간단히 말해, 가장 빠르게 증가하는 항만을 고려하는 표기법이다. 빅오 표기법 : 알고리즘의 효율성을 표기해주는 표기법이다. 알고리즘의 효율성은 데이터 개수(n)가 주어졌을 때 덧셈, 뺄..
오늘은 10시에 이력서 특강을 듣고 이력서를 작성 했다. 특강에서 한 페이지에 내용이 담겨 있으면 좋을 꺼 같다 라는 내용과 잘 쓰는 꿀팁 등 여러가지 정보를 제공했었다. 구글 docs에서 이력서를 작성을 할려고 했지만 내용을 많이 적을 수가 없었기 때문에 노션으로 작성을 했다. 처음 작성 해보는 이력서라서 어떻게 적어야할지 감이 오지 않았고 프로젝트에서 경험했던 일들과 막혔던 부분들을 잘 녹이는게 힘들었던거 같아서 피드백을 받고 개선을 해봐야 할꺼 같다. 실전 프로젝트에서 조금 더 해보고 싶었던것들이 있었는데(람다를 이용한 이미지 리사이징) 개선할 시간이 없을꺼 같긴하다. 이력서를 쓰면서 항해99 시작부터 지금까지 해온 것들을 되돌아 보는 시간을 가지면서 부족했던 점과 성장한 부분들이 보였고 결과물이 ..
6주간의 프로젝트가 끝나고 처음 만끽하는 주말에 들뜬 마음으로 하루를 보냈고 이번 주 부터 진짜 시작이라는것을 이력서 특강을 들으면서 크게 와닿았다. 프로젝트를 진행하면서 실력이 느는게 몸소 느껴지고 내가 성장 했다는 느낌도 많이 받았고 재미있게 느껴져서 신기 했었다. 지금까지 해왔던 프로젝트들을 되짚어 보며 이력서에 잘 녹여내서 만들면 좋을꺼 같다. 멘토링 시간에 많은 이야기를 했었고 기술 면접 질문들을 저희에게 물어보았는데 알고 있던 질문들도 막상 대답을 할려고 하니 제대로 하지 못했고 많이 부족 했다라는 것을 느낀 하루였다. 많이 성장하면서 많은 것들을 배웠고 그에 따른 지식도 필요하기에 이력서를 쓰고 피드백 받으면서 준비를 하면 좋을꺼 같다.
오늘은 14시부터 17시까지 발표와 협력사 세션을 들었고 다른 조 들의 발표를 보면서 다양한 방법과 코드가 있는 것을 알수 있는 좋은 경험이였다. 그 후 노션에는 프로젝트 경험을 정리했다. 기존에는 자바스크립트로 구현을 하였는데 자바스크립트는 런타임이 시작되고 나서 에러가 발생 하기 떄문에 오류가 잦고 쉽게 타입을 알 수가 없습니다. 그 때문에 서버에 치명적이고 에러의 원인을 쉽게 파악 하지 못하는 단점이 있어서 타입스크립트로 선택하였습니다. 장점으로는 정적 타입의 언어로 런타임 전에 에러를 잡을 수 있고 파라미터들의 타입을 한눈에 알 수 있고, 코드를 쓰기 전에 타입을 한번 더 생각하게 되면서 런타임 전 에러와 타입을 잡을 수 있는 장점이 있었습니다. 타입스크립트 공부를 처음 시작 했을 때는 기초적인 ..
오늘은 최종 발표 자료를 검토하고 영상 제작을 했었다, 이때 까지 진행 한거를 말로 풀어서 쓸려고 하니 어려웠던거 같고 보기좋게 ppt를 만드는게 어려운거 같았다. 그리고 이미지 리사이징을 람다로 해볼까 생각 하고 있고 cd도 다시 적용을 했고 서버 바꿔서 다시 적용 하는거는 어렵지 않았다. 다음에는 서버를 구축 할 때 탄력적 ip를 써서 껏다 켜도 ip가 바뀌지 않게 해야곘다고 다짐 했다. 그리고 sequelize의 마이그래이트와 테이블 생성 코드에서 배포용으로 돌릴시 코드의 오류를 발견 했고 개선했다. //config.ts import dotenv from 'dotenv'; dotenv.config(); type Config = { username: string; password: string; da..