어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
function solution(my_string) {
const result = [];
for (let i = 0; i < my_string.length; i++) {
result.push(my_string.slice(i));
}
return result.sort();
}
전에 배운대로, slice 메서드를 통해 간단하게 i번째부터 끝까지 slice한 my_string을 반복문으로 result에 push 해준 다음 result를 sort()하여 간단히 풀 수 있는 문제였다.
프로세스와 스레드에 대해 설명해주세요.
프로세스와 스레드는 컴퓨터 운영체제에서 작업을 실행하는 기본 단위입니다. 둘의 차이점은 작업을 실행하는 환경에 있는데, 프로세스는 현재 실행 중인 프로그램의 실행 단위이고, 스레드는 프로세스 내 작업의 실행 단위입니다.
혹시 웹 보안에서 XSS 공격이나 CSRF 공격에 대해서 알고 계신가요?
XSS는 Cross Site Scripting으로 해커가 특정 스크립트를 웹 페이지에 삽입하여 해당 페이지를 접속하는 유저에세 특정 스크립트를 실행하도록 하는 공격입니다. 이를 방지하기 위해서는 html-sanitizer를 통해 유저의 입력을 필터링하는 방법이 있습니다.
HTTP 메서드 중 GET, POST 방식의 차이점에 대해서 설명해주세요.
GET은 READ, POST는 CREATE라고 볼 수 있습니다. GET 메서드는 주로 데이터를 불러올 때 사용되고 POST는 주로 데이터를 서버로 보낼 때 사용합니다.
TCP와 UDP를 비교해서 설명해주세요.
TCP와 UDP는 모두 네트워크 프로토콜이지만, 특징은 정 반대입니다. TCP는 데이터의 손실이 없는 완전한 전송을 보장하는 대신 속도가 느립니다. 때문에 신뢰도가 높아야하는 애플리케이션에 적합합니다. UDP는 데이터가 손실될 수 있지만 빠른 속도를 보장합니다. 때문에 데이터 손실이 있어도 상관 없고 속도가 중요한 곳에 적합합니다. 예를 들어 실시간 스트리밍이 있습니다.