부시기 시리즈 8

CS 면접 부시기 - JAVA plus

java의 대표 collection에는 어떤 것들이 있나요? 더보기 자바의 대표 컬렉션에는 list, map, set, stack, queue와 같은 것들이 있습니다. 이 추상화된 컬렉션 인터페이스 아래, 특정한 기법으로 구현된 자료구조가 들어갑니다. 예를들어, List 라는 인터페이스에는 구현방법에 따라 ArrayList가 들어갈 수도, LinkedList가 들어갈 수도 있습니다. List에 대해 설명해주세요 더보기 리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있습니다. List에는 대표적으로 ArrayList와 LinkedList가 있습니다. ArrayList는 배열로 구현된 List입니다. 배열과 같은 자료구조이기 때문에, 리스트의 연산 수행시간 속도는 배열과 같습니..

CS 면접 부시기 - 암호학/보안

비대칭키 암호화, 대칭키 암호화에 대해 간단히 설명해주세요 더보기 비대칭키 암호화란 공개키 암호화라고도 하며, 공개키는 외부에 공개, 비밀키는 내부적으로 가지고 있고 서로 각각의 키로 암호화하거나 해제할 수 있는 방식입니다. 이 방식은 대칭키를 공유하는 방식보다 비교적 안전하며, 대신 연산 성능이 떨어지는 편입니다. 대칭키 암호화란 양측이 동일한 키를 가지고 있으며, 암호화와 해제에 동일한 키를 사용하는 방식입니다. 이 방식은 비밀키가 노출되는 문제가 있을 수 있으며, 연산 성능은 덜 필요해 상대적으로 빠릅니다. 단 방향 암호화에 대해서 간단히 설명해주세요 더보기 단방향 암호화는 복호화 불가능한 암호화라고 합니다. 대부분 해시 알고리즘을 이용해서 구현하며, 민감정보를 데이터베이스에 저장할 때 해당 방식을..

CS 면접 부시기 - JAVA

JVM의 구조와 JAVA의 실행방식을 설명해주세요 더보기 자바 가상 머신의 약자를 따서 줄여 부르는 용어로 JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것입니다. 메모리 관리(GC)를 수행하며 스택 기반의 가상 머신입니다. JVM의 구조는 Class Loader, Execution Engine, Runtime Data Area, JNI, Native Method Library로 이뤄져 있습니다. 클래스 로더(Class Loader): JVM 내로 클래스를 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 실행 엔진(Execution Engine): 바이트 코드를 실행시키는 역할 인터프리터: 바이트 코드를 한줄 씩 실행합니다. JIT 컴파일러: 인터프리터 효..

CS 면접 부시기 - 운영체제

프로세스와 스레드의 차이를 설명해보세요 더보기 프로세스는 실행 중인 프로그램을 의미합니다. 스레드는 실행 제어만 분리한 것을 의미합니다. 프로세스는 운영체제로부터 자원을 할당받지만, 스레드는 프로세스로부터 자원을 할당받고 프로세스의 코드/데이터/힙 영역을 공유하기 때문에 좀 더 효율적으로 통신할 수 있습니다. 또한 콘텍스트 스위칭도 캐시 메모리를 비우지 않아도 되는 스레드 쪽이 더 빠릅니다. 그리고 스레드는 자원 공유로 인해 문제가 발생할 수 있으니 이를 염두에 둔 프로그래밍을 해야 합니다. 한 프로세스 안에 여러 개의 스레드가 생성될 수 있습니다. 콘텍스트 스위칭에 대해 설명해보세요 더보기 콘텍스트 스위칭은 한 Task가 끝날 때까지 기다리는 것이 아니라 여러 작업을 번갈아가며 실행해서 동시에 처리될 ..

CS 면접 부시기 - 네트워크

웹 통신의 큰 흐름 : https://www.google.com/ 을 접속할 때 일어나는 일은 더보기 ⭐️ OSI 7 계층과도 연관 지어 설명하라는 질문을 받을 수도 있음 브라우저가 URL에 적힌 값을 파싱 해서 HTTP Request Message를 만들고, OS에 전송을 합니다. 이때, Domain으로 요청을 보낼 수 없기 때문에 DNS Lockup을 수행합니다. DNS Lockup 과정은 크롬의 경우 브라우저 → hosts 파일 → DNS Cache의 순서로 도메인에 매칭 되는 ip를 찾습니다. 일반적으로 설명하는 DNS Lockup은 루트 도메인 서버에서부터 서브 도메인 서버 순으로 찾게 됩니다. 이 요청은 프로토콜 스택이라는 OS에 내장된 네트워크 제어용 소프트웨어에 의해 패킷에 담기고 패킷에 ..

SQL 코딩테스트 부시기

SQL 코딩테스트를 부시기 위해 정리한 글입니다 이글을 보는 모두가 코딩테스트를 부시길 바랍니다 1. 데이터를 찾는 쿼리 SELECT 데이터베이스에서 데이터를 선택할 때 사용합니다 SELECT * FROM table_name; DISTINCT 중복된 값을 필터링하고 지정된 열의 행을 반환합니다 SELECT DISTINCT column_name; WHERE 레코드와 행의 필터링에 사용합니다 SELECT column1, column2 FROM table_name WHERE condition; SELECT * FROM table_name WHERE condition1 AND condition2; SELECT * FROM table_name WHERE condition1 OR condition2; SELECT ..

자바로 코딩테스트 부시기

1. 특정 배열에 값들을 넣을 때, 중복 없이 넣는 방법 ArrayList를 선언하고 특정 값이 value라고 할 때 if (arrayList.indexOf(value) < 0) ArrayList.add(value); ArrayList에 indexOf 함수는 특정 value가 없으면 -1을 리턴하기 때문에 위 예제는 어레이 리스트에 이 값이 없을 때만 add 하겠다는 뜻입니다. 2. 어레이리스트의 값을 하나씩 가져와서 배열에 넣을 때 String 형태면 for문을 돌리면서 arr[i] = list.get(i) 하면 되는데, int 형태라면 arr[i] = list.get(i).intValue(); 라고 해줘야 합니다. 3. 특정 정수를 잘라서 사용하고 싶을 때 123이라는 정수를 1, 2, 3으로 나눠 ..