본문 바로가기
면접질문

프론트엔드 개발자 기술면접 질문

by 질서정연_ 2023. 11. 24.

 

 

 

좋은 기회로 기술면접을 보게되었다. 

부족한 부분을 알 수 있게 되어 좋았다.

첫 기술면접이라 성장 할 수 있는 기회가 되었다.

제대로 답변하지 못한것이 많아 기술질문을 복습해보겠다.

 

알고리즘 질문

Array , List , Stack , Hash Table 에 대해 설명해주세요.

질문을 받았을 때 Array 와 List가 비슷한거 아닌가? 라고 생각했다. T_T 부족함을 반성합니다..

 

Array

Array 는 선형 자료구조이다. 

인덱스가 있다. 

길이가 고정되어있다.

인덱스를 이용해 빠르게 데이터에 접근이 가능하다. 

인덱스를 유지해야하기 때문에 해당 메모리를 유지해야한다는 단점이 있다. 

그래서 적절한 배열의 크기를 초기에 잘 설정해야한다. 

데이터의 개수가 정해져있는 경우나 데이터의 수정이 적은경우, 

혹은 데이터의 검색이 빈번한 경우에 적절하다.

연속된 메모리 공간에 순차적으로 저장된다. 

 

-> 공부하다가 생긴 의문.

길이가 고정되어있다고 하는데 길이가 4인 배열에 하나를 더 넣으면 길이가 5가 되는게 아닌건가?

https://press.rebus.community/programmingfundamentals/chapter/fixed-and-dynamic-arrays/

 

Fixed and Dynamic Arrays – Programming Fundamentals

Fixed and Dynamic Arrays Dave Braunschweig Overview A fixed array is an array for which the size or length is determined when the array is created and/or allocated. A dynamic array is a random access, variable-size list data structure that allows elements

press.rebus.community

이걸 보니까 fixed array 랑 dynamic array 가 있는듯 ...?

 

List

List 는 이러한 배열의 단점을 보완하기 위해 노드를 연결하여 데이터를 적재하는 자료구조이다.  

불연속적인 메모리공간에 원소와 다음 노드의 주소를 가진 노드가 계속해서 이어져있어 

선형의 형태를 유지한다. 

리스트는 주로 원소의 삽입과 삭제가 빈번하거나, 자료의 검색이 빈번하지 않은 경우에 사용한다. 

노드는 헤드와 테일 형태로 이루어져있다.

각 노드의 테일에는 다음 노드의 주소정보를 저장하고있어서 데이터가 불연속적인 메모리 공간에 위치하고 있어도

꼬리에 꼬리를 물고 원하는 원소에 접근이 가능하다.

그렇기 때문에 크기가 고정되어 있지 않다.

새로운 원소를 추가할 경우, 테일 노드에 새롭게 추가된 원소의 주소를 연결하면 된다.

 

Stack

후입선출의 자료구조 LIFO(Last In First Out)

스택은 주로 컴퓨터 연산에 사용하는 자료구조로 

연산의 우선순위에 따라 쉽게 연산할 수 있도록 도와준다. 

 

Hash Table 

Key Value 로 데이터를 저장하는 자료구조로 빠르게 데이터를 검색할 수 있는 자료구조이다.

빠른 검색속도롤 제공하는 이유는 내부적으로 배열 (버킷)을 사용해서 데이터를 저장하기 때문이다.

각각의 Key값에 해시함수를 적용해 배열의 고유한 index를 생성하고, 

이 index를 활용해 값을 저장하거나 검색한다. 

실제 값이 저장되는 장소를 버킷 또는 슬롯이라고 한다. 

 

해시함수를 사용해 변환한 값을 index로 삼아 key 와 value를 저장하는 자료구조 

 

Hash Table 이 어디에 사용될까요?

데이터베이스 인덱싱 에도 사용된다고 하고 

데이터 가져오기, 전자서명, 암호화, 파일 조작 예방 등에도 사용한다고 함 ~!!

파일 조작을 하면 이게 hash value도 변해서 파일이 수정되었는지 아닌지 확인 할 수 있어 그런가봄 !

 

https://en.wikipedia.org/wiki/Hash_table

 

Hash table - Wikipedia

From Wikipedia, the free encyclopedia Associative array for storing key-value pairs Hash tableTypeUnordered associative arrayInvented1953Operation Average Worst caseSearch Θ(1) O(n)Insert Θ(1) O(n)Delete Θ(1) O(n)Space Θ(n)[1] O(n) A small phone book a

en.wikipedia.org

 

https://www.indeed.com/career-advice/career-development/what-is-hashing

 

Tree 구조로 된 자료구조를 순회하는 방법에는 어떤것이 있을까요?

DFS (Depth - First Search)

최대한 깊이 내려간 뒤, 더이상 갈 곳이 없을때 옆으로 이동 

현재 정점에서 갈 수 있는 점들까지 들어가면서 탐색

스택 혹은 재귀함수로 구현

 

BFS (Breadth - First Search)

최대한 넓게 이동한 다음, 더 이상 갈 수 없을때 아래로 이동 

현재 정점에 연결된 가까운 점들부터 탐색 

큐로 구현

 

+) 추가공부

모든 정점을 방문하는게 주요한 문제일때

BFS DFS 상관 X

경로의 특징을 저장해둬야 할때 

DFS

최단거리 구해야 할 때 

BFS

 

자바스크립트 질문

var let const 의 차이

var 로 선언한 변수를 동일한 이름으로 여러번 중복해서 선언이 가능하다. 

마지막에 할당된 값이 변수에 저장된다. 

기존에 선언해둔 변수의 존재을 잊고 값을 재할당하는 등의 실수가 발생할 수 있다. 

값이 바뀔 우려가 있다. 

호이스팅 발생. 

 

호이스팅이란 함수 내부에 있는 선언들을 모두 끌어올려 해당 함수 유효 범위의 최상단에 선언하는것을 뜻한다. 

 

let 은 중복선언이 불가능하고 재할당이 가능하다. 

 

const 는 중복선언이 불가능하고 재할당이 불가능하다. 

 

스코프란?

스코프를 알아야 클로저도 이해할 수 있다 !

스코프 단어 자체는 범위라는 뜻을 가진다. 

식별자 접근 규칙에 따른 유효 범위를 뜻한다. 

 

클로저란?

 

주변 상태에 대한 참조와 함께 묶인 함수의 조합

즉 클로저는 내부 함수에서 외부 함수의 범위에 대한 접근을 제공한다. 

JS에서 클로저는 함수 생성 시 함수가 생성 될 때마다 생성된다. 

클로저가 생성된 시점의 유효 범위 내에 있는 모든 지역 변수로 구성된다. 

 

함수의 lexical 환경에서는 넘겨받은 매개변수와 지역변수들이 저장된다. 

 

함수와 렉시컬 환경의 조합

함수가 생성될 당시의 외부 변수를 기억하고

생성 이후에도 계속 접근이 가능하다. 

 

외부함수가 소멸 된 이후에도 내부함수가 외부함수의 변수에 접근할 수 있따. 

 

내부함수에서 외부함수의 변수에 접근 

 

은닉화에 성공할 수 있게 된다. 

 

웹 번들러란?

웹의 규모가 커지면서 용량도 커지고 파일도 많이 생겼다. 

전송에 시간도 많이 걸리고 많은 파일들간에 변수명이 겹치는 일이 생기면서

번들러가 필요하게 됐다.

번들러란 애플리케이션에 필요한 모든 종류의 파일들을

모듈 단위로 나누어 최소한의 파일 묶음(번들)로 만들어내는 것이다.

 

참조

https://bigsong.tistory.com/31

 

[자료구조] 배열과 리스트(Array & List)

배열 배열이란 연관된 데이터를 하나의 변수에 그룹핑해서 관리하기 위한 선형 자료구조로 배열을 이용하면 하나의 변수에 여러 정보를 담을 수 있으며, 반복문과 결합하여 효율적으로 데이터

bigsong.tistory.com

 

https://80000coding.oopy.io/e1721710-536f-43f2-823b-663389f5fbfa

 

var, let, const 차이점

변수 선언 방식

80000coding.oopy.io

 

'면접질문' 카테고리의 다른 글

[개발상식] URI, URL, URN 이란?  (0) 2022.04.26
[개발상식] 배치 파일(batch file)이란?  (0) 2022.04.23

댓글