코드카타
문자열에서 중복된 문자를 제거하면서 순서는 유지하고 싶을 때
list(dict.fromkeys(mystring))
문자열 -> 리스트화 후 fromkeys()
CS
면접 질문
- multi-threading이 무엇이며 이를 사용하는 이유는?
멀티쓰레드(multi-thread)
: 하나의 프로세스가 여러 작업을 여러 쓰레드를 사용해 동시에 처리하는 것
장점
- 자원의 효율성, 시스템 자원 소모 감소: 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리할 수 있다.
- 시스템 처리량 감소: 쓰레드 간 데이터를 주고 받는 것이 간단해지면서 시스템 자원 소모가 줄어든다. context switching이 활발하게 일어난다.
단점
-
Deadlock, 교착 상태.
둘 이상의 쓰레드가 서로의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 의미
e.g.
쓰레드 1 - A 자원 접근 & 다른 쓰레드 차단, B 자원 요청
쓰레드 2 - B 자원 접근 & 다른 쓰레드 차단, A 자원 요청
-> 서로의 작업이 완료되지 않은 상태에서 다른 자에 대한 요청을 한 뒤로 대기하고 있기 때문에 작업이 끝나지 않는 것.
메모리 누수: 더 이상 사용하지 않는 객체들이 힙 영역에 남아서 불필요하게 메모리를 차지하고 있는 상황을 의미
문제인 이유: 메모리에 남아 있으면 성능 저하를 일으키고, 메모리 부족 에러를 야기하기 때문에
Waterfall
위에서 아래로 단계 별로 진행되는 개발 방법론.
설계, 디자인, 개발, 테스트, 배포의 과정을 거쳐서 진행되며 각 단계에 따라 업무를
튜터님 답변