230903.log

Universe·2023년 9월 3일
0

log

목록 보기
8/14
🗓️ 날짜 : 2023.09.03

📚 할 일 : 10to7, 1day 1commit 1post, 1mon 3project

📝 오늘의 목표 : 면접 질문 정리

⌛ 공부시간 : 19:00 ~ 22:00

TIL

가볍게 이전에 정리했던 내용을 갈무리하고 보완했다.
개인적 질문을 따로 정리했더니 생각보다 많지 않았다.
굉장히 기본적인 질문들만 공부했던모양.
한번 다시 정리하고 여러가지 질문 리스트를 추려서 추가할 예정.
기업의 특성상 B2B 에 대해서 많이 질문할 것 같고,
프로젝트 코드를 어떻게 짰는지, 어떤 생각을 하면서 개발했는지도 다시 갈무리하면 좋을 것 같다.
추가적으로 회사에서 만든 어플리케이션을 보고 어떻게 생각했는지 정리하면 좋겠다.

면접 질문&답변 정리

  1. 시간복잡도와 공간복잡도가 무엇인지 설명해주실 수 있나요 ?
    알고리즘의 성능을 분석하는 데 중요한 지표입니다.
    시간복잡도는 알고리즘이 문제를 해결하는 데 걸리는 시간을 나타내고,
    공간복잡도는 알고리즘이 필요로 하는 메모리 공간의 양을 나타냅니다.
    일반적으로 서로 반비례하는 성질을 가지고 있습니다.
    최근에는 기술의 발달로 할당할 수 있는 메모리의 양이 늘어났기 때문에
    효율적인 지표를 공간복잡도 보다는 시간복잡도 측면에서 판단하는 것으로 알고있습니다.

  2. 스택과 큐에 대해서 알고있나요 ?
    스택과 큐는 데이터를 저장하고 관리하는 자료구조의 기초적인 예시들 입니다.
    스택은 바벨탑처럼 데이터를 쌓아올리는 구조이며 마지막에 넣은 데이터가 가장 먼저 꺼내지는
    후입선출 방식입니다. 브라우저의 뒤로가기를 예시로 들 수 있겠습니다.
    큐는 파이프라인 처럼 데이터를 일렬로 늘어놓는 것 같은 구조입니다.
    맨 처음에 넣은 데이터가 가장 먼저 꺼내지는 선입선출 방식이고
    대기열의 대기 처리 작업을 예시로 들 수 있습니다.

  3. 배열과 링크드리스트에 대해서 설명해주세요.
    배열과 연결리스트는 데이터를 저장하고 관리하는 자료구조 입니다.
    배열은 1,2,3,4 번 이렇게 인덱싱해서 자료를 저장한다면
    연결리스트는 1번 다음 2번, 2번 다음 3번 식으로 데이터를 저장합니다.
    배열은 인덱스로 자료를 빠르게 불러오는데 용이하며 적은 자원으로도 빠르게 처리할 수 있지만
    물리적인 메모리의 위치를 정적으로 순서에 맞게 할당해야 하기 때문에
    중간에 삭제하거나 추가하는 작업이 어렵습니다.
    그에반해 연결리스트는 단지 데이터간의 순번만 기억하면 되기때문에 삭제나 추가가 용이하지만
    연결된 순번을 기억해야하는 메모리가 추가적으로 필요하기 때문에 메모리 공간을 더 많이 차지하며
    순차적으로 타고타고 검색을 해야하기 때문에 탐색 속도가 떨어진다는 단점이 있습니다.

  4. CORS 에 대해서 설명해주세요.
    CORS는 교차 출처 리소스 공유의 약자로 웹 브라우저에서 실행되는 스크립트가
    다른 출처에서 리소스를 요청할 때 발생하는 일종의 보안정책입니다.
    다른 도메인에서 제공하는 API나 서버에서 리소스를 제공하는 경우에, 해당 리소스가 요청된 출처랑
    일지하지 않으면 브라우저는 보안상의 이유로 요청을 차단합니다.
    CORS를 허용하기 위해서는, 서버측에서 응답 헤더에 엑세스 컨트롤 얼로우 오리진 헤더를 추가해서
    허용할 출처를 명시해주어야 합니다.

  5. var, let, const, 자바스크립트의 변수 선언에 대해서 설명해주실래요 ?
    var 은 ES5 이하의 버전에서 사용되던 변수 선언 방법입니다.
    함수 레벨 스코프를 가지며 호이스팅이 발생합니다. 현재는 잘 사용되지 않습니다.
    ES6 이후의 자바스크립트에서는 let과 const 가 주로 사용되는데,
    둘 다 블록 레벨의 스코프를 가지지만
    let 은 변수의 값을 변경할 수 있고 const 는 변경할 수 없어 불변의 값을 가지는
    차이점이 있습니다.

  6. Promise가 무엇인가요?
    Promise 는 자바스크립트에서 비동기 연산을 수행할 때 사용되는 객체입니다.
    Pending, Fulfilled, Rejected 세 가지 상태를 가지며,
    then(), catch() 등의 메소드를 사용하여 후속 처리를 할 수 있습니다.

  7. 호이스팅에 대해서 설명해주세요.
    변수와 함수의 선언이 스코프의 최상단으로 끌어올려지는 것 처럼 보이는 현상을 말합니다.

  8. 그렇다면 TDZ 에 대해서 알고있나요?
    let과 const 로 선언된 변수가 초기화 되기 이전까지의 구간을 TDZ 라고 합니다.
    이 구간에서 변수에 접근하면 참조 에러가 발생합니다.
    var 로 선언한 변수는 선언 이후에 undefined 로 바로 초기화 되기 때문에
    TDZ 속성을 가지지 않아 접근할 수 있으며 undefined 를 반환합니다.
    let 과 const 는 var의 이러한 속성을 보완했다고 볼 수 있습니다.

  9. async await 에 대해서 설명해주세요.
    async, await 키워드는 비동기 코드를 보다 간결하고 가독성 있게 작성하게 해주는 문법입니다.
    async 로 키워드가 붙은 함수는 항상 Promise 를 반환하며
    await 키워드는 Promise 객체가 해결될 때까지 기다리는 역할을 합니다.
    async 함수 안에 비동기 로직을 순차적으로 넣을 수 있어
    Promise 체이닝을 하는 것 보다 가독성 측면에서 유리합니다.

  10. 자바스크립트의 화살표 함수 (Arrow Function) 에 대해서 설명해주세요.
    자바스크립트의 ES6 버전부터 도입된 새롭게 함수를 선언하는 방법입니다.
    함수를 더 간결하게 작성할 수 있게 해줍니다.
    function 으로 선언하는 함수와 가장 큰 차이점은 자신만의 this 를 가질 수 없다는 점입니다.
    대신 렉시컬 스코프의 this를 상속받습니다.
    이벤트 핸들러나 콜백 함수에서 유용하게 사용할 수 있습니다.

profile
Always, we are friend 🧡

0개의 댓글