24/1/16 기술면접(3)
2024. 1. 17. 08:40ㆍ카테고리 없음
- 동기와 비동기의 차이에 대해 설명해주시고 비동기프로그래밍의 필요성에 대해 답변해주세요.
- 답변비동기는 비동기적인 작업이 완료되기를 기다리지 않고, 다른 작업을 동시에 진행할 수 있고 특정 이벤트의 발생,콜백 함수의 실행,또는 Promise와 같은 비동기 패턴을 통해 처리됩니다.
- 비동기 프로그래밍은 성능 향상,반응성 향상, 효율성,스케일링과 확장성을 위해서 필요합니다.
- 동기는 작업을 순차적으로 진행하며,각 작업은 이전 작업의 완료를 기다리고,한 작업이 시작하면 그 작업이 완료될 때까지 다음 작업이 차단되어 대기합니다.
- 답변
기본적으로 자바스크립트는 로직들을 동기적으로 수행합니다. 위에서부터 로직을 읽어나가면서 실행시킵니다.
하지만 외부와의 통신과 같은 어느정도의 시간이 걸릴지 예측 하지 못하는 로직들은 그 로직을 실행시키고 결과값을 얻어내기 전에 다음 로직을 실행시키는 비동기적인 실행을 하는것이 효율적입니다.
이런 비동기적함수들은 결과로 promise를 리턴합니다.이 promise의 리턴값은 일반적인 로직으로 사용할수 없고
then catch 나 async await와 같은 방법으로 이용이 가능합니다.
- 브라우저의 작동방식에 대해서 설명해주세요.
- 답변
- 사용자가URL을 입력하거나 링크를 클릭하면,브라우저는 해당URL로 요청을 보냅니다. URL요청 을 바탕으로 도메인의 IP주소를 찾습니다.
브라우저는 찾은 IP주소를 바탕으로 서버에 HTTP요청을 보냅니다.
서버는 브라우저 가 반환한 HTML CSS JavaScript 를 반환받습니다.
브라우저는 반환받은 내용으로 Dom을 생성하고 CSS가 결합되어 랜더트리를 형성합니다.
랜더트리를 기반으로 레이아웃 이미지 폰트 등과 같은 페이지 요소를 랜더링합니다.
- GET, POST 방식의 차이점에 대해서 설명해주세요
- GET -
데이터를 URL형식으로 전송합니다. URL은 그대로 노출되기 떄문에 보안이 약합니다.
브라우저와 서버간의 통신에 사용되며 비교적 작은양의 데이터를 전송합니다.
브라우저가 GET요청에 대한 응답을 캐싱합니다. 동일한 요청을 보낼경우 캐싱한 데이터를 이용합니다.
URL이 노출되어있어 북마크에 용이합니다.
부작용이 발생하지 않고 안전한 요청입니다. - POST
HTTP 요청의 본문에 데이터를 담아 보내기 때문에 비교적 많은 양의 데이터 전송에 유리합니다.
본문에 담아보이기때문에 요청사항이 보이지 않아 보안에 용이합니다.
데이터를 전송하고나 업데이트에 자주 이용하빈다.
일반적으로 캐싱되지 않기 때문에 동일한 요청은 한번더 응답을 받아야합니다.
주소창에 데이터가 남지 않기 떄문에 북마크가 어렵습니다.
요청에 부작용이 발생할수 있어서 안전한 요청이 아닙니다.
- GET -
- . 쿠키, 세션, 웹스토리지의 차이를 설명해보세요
- 답변
서버와 클라이언트 간 상태 유지와 세션관리에 사용됩니다.
작용용량을 저장합니다.
지속적인 사용이 가능하빈다. 특정도메인에 요청에만 전송됩니다. 클라이언트 수정가능합니다.
세션 - 서버에 저장됩니다.
사용자의 로그인 상태를 유지하고 인증정보를 저장하빈다.
브라우저를 닫거나 세션의 만료될떄까지 유지됩니다.
서버측에서 관리합니다. 보안성이 높습니다.
웹스토리지
-클라이언트 브라우저에 저장됩니다.
대량의 데이터 저장에 용이하빈다.
로컬스토리지와 세션스토리지로 나뉘어집니다.
로컬스토리지 : 도메인과 상관없이 모든페이지에 접근가능하고 사용자가 수정가능합니다.
세션스토리지 :세션이 있는 동안에만 유지되며 브라우저가 닫히면 없어집니다.