나의 개발일지(김지헌)
항해 99 92일차 12/19일 본문
오늘은 기술 면접을 질문 들을 준비해서 정리하는 시간을 가졌다. 솔직히 아직 개념이 잘 안잡히는거 같다.
더보기
프레임워크 : 개바르이 다양한 기능을 통합한 공통적인 개발환경
라이브러리 : 공통으로 사용될 수 있는 특별 기능들의 집합
- 시간복잡도와 공간복잡도가 무엇인지 설명해주실 수 있을까요?
- 시간 복잡도(Time Complexity) : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지를 의미 (알고리즘을 위해 필요한 연산의 횟수)
시간 복잡도를 표현할 때는 빅오(Big-O) 표기법을 사용한다. 빅오 표기법이란 간단히 말해, 가장 빠르게 증가하는 항만을 고려하는 표기법이다.
빅오 표기법 : 알고리즘의 효율성을 표기해주는 표기법이다. 알고리즘의 효율성은 데이터 개수(n)가 주어졌을 때 덧셈, 뺄셈, 곱셈 같은 기본 연산의 횟수를 의미한다
- 공간 복잡도(Space Complexity) : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지를 의미 (알고리즘을 위해 필요한 메모리의 양)
간 복잡도를 표기할 때도 시간 복잡도를 표기했던 것처럼 빅오 표기법을 이용한다. 다만, 코딩테스테서는 앞서 시간 복잡도에서는 1초라는 절대적인 제한이 있던 것처럼, 메모리 사용량에도 절대적인 제한이 있다. 쉽게 말해, MB(메가바이트)단위로 제시되는 메모리 사용량 기준은 공간복잡도를 제한하기 위하여 명시하는 것이다.
2.스택, 큐에 대해 설명해주실 수 있을까요?
- 스택top : 가장 위에있는 자료로 최근에 들어온 자료를 가르킵니다.pop : 삭제하는 연산ex ) 웹브라우저 뒤로가기 , 실행취소
- 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다
- push : top을 통해 삽입하는 연산
- 스택은 쌓아 올린다는 것을 의미하며 차곡차곡 쌓아올린 형태의 자료구조를 말합니다.
- 큐스택과 달리 한쪽 끝 에선 삽입 작업이 다른쪽 끝에선 삭제작업이 이루어진다.rear : 삽입연산만 작동, enQueue(인큐)(rear에서 이루어지는 삽입연산)
- ex) 은행업무, 예약, 콜센터 대기시간
- front : 삭제연산만 작동, dnQueue(디큐)(프론트에서 이루어지는 삭제연산)
- 선입 선출방식의 자료구조를 가지고 있다.
- 배열, 링크드리스트를 비교하여 설명해주실 수 있을까요?
- 배열과 링크드리스트(연결리스트)
- 배열
- 장점 :
- 인덱스를 통한 빠른 접근이 가능
- 단점 :
- 삽입 삭제 오래걸림 / 배열 중간에 있는 데이터가 삭제되면, 공간 낭비가 발생한다.
- 용도 :
- 빠른 접근이 요구되고, 데이터의 삽입과 삭제가 적을 때
- 장점 :
- 배열
- 배열은 정적(static)인 자료구조를 가지고 있으며 값이 저장 되기전에 크기를 지정해놔야하기 때문에
- 링크드리스트 동적인 자료구조를 가지고 있고 값이 저장될때 마다 크기가 증가한다.
- 연결리스트
- 장점 :
- 삽입과 삭제가 용이하다
- 단점 :
- 임의 접근이 불가능하여, 처음부터 탐색을 진행해야만 함
- 용도 :
- 삽입과 삭제 연산이 잦고, 검색 빈도가 적을 때 사용
- 장점 :
- 연결리스트
- 트랜잭션이란 무엇이고 원자성, 일관성, 고립성, 지속성이란 무엇인지 설명해주실 수 있을까요?
정의 : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 SELECT INSERT``DELETE``UPDATE
- 원자성오류 발생시 트랜잭션 전부가 취소 되어야함
- 트랜잭션의 연산은 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다.
- 일관성시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야한다.
- 트랜잭션의 작업 처리 결과는 항상 같아야 한다.
- 고립성
- 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다.(즉 하나의 트랜잭션 실행중에는 다른 트랜잭션 연산이 끼어들 수 없다.)
- 지속성
- 트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 한다.
- 정규화란 무엇이고 대표적인 장점과 단점은 무엇이 있을까요?
- 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다.(릴레이션 : 표의 형태로 표현 한거기 때문에 릴래이션 개체(열), 릴래이션인스턴스로 나옴(열에 따른 값)장점 : 데이터베이스 변경 시 이상현상을 제거할수 있음.단점 : 속도가 느려질수도 있고 빨라질수도 있다. join연산을 많이 해야한다.
- 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용프로그램의 생명을 연장시킨다.
- CORS란 무엇이고 어떻게 허용할 수 있나요?
- Cross-Origin Resource Sharing로 다른 출처간에 리소스를 공유 할 수 있도록 하는 걸 말한다.서로 다른 출처끼리 정보 요청과 반환이 가능하게 해주는 것이 CORS이다.보내는 측에서 요청의 옵션에 credential 항목을 true로 세팅하고, 받는 쪽에서도 아무 출처나 받는 와일드카드가 아닌 보내는 쪽의 출처와 웹페이지 주소를 정확히 명시하여 Access-Control-Allow-credential 항목을 true로 맞춰줘야한다.
- origin에서 보낸 출처값이 서버의 답장 header에 담긴 Access-Control-Allow-Origin에 똑같이 있으면 안전한 요청으로 간주하고, 응답 데이터를 받아오게 된다.
- Origin은 URL에서 프로토콜, 도메인, 포트 번호를 합친 부분
- var, let, const 에 대해 설명해주실 수 있을까요?(변수 선언 방식)
- var
- 변수 재선언시 에러가 나오지 않고 각기 다른 값이 출력되기 때문에 코드의 양이 많아지면 어디에서 어떻게 사용될지 파악하기 힘들다.
- letlet name = ‘hi’ ⇒ name =’hello’
- 변수라는 뜻으로 한번 선언시 재사용은 불가능 하지만 재할당은 가능하다.
- const
- 상수라는 뜻으로 한번 선언시 재사용이 불가능 하다.
'항해 99' 카테고리의 다른 글
항해 99 94일차 12/21일 (0) | 2022.12.22 |
---|---|
항해 99 93일차 12/20일 (0) | 2022.12.21 |
항해 99 91일차 12/18일 (0) | 2022.12.19 |
항해 99 90일차 12/17일 (0) | 2022.12.18 |
항해 99 89일차 12/16일 (0) | 2022.12.17 |