본문 바로가기

기술 이야기/면접 꿀팁6

[면접 꿀팁] Eigenvalue와 Eigenvector 설명 안녕하세요, 우리를 힘들게 하는 선형대수에는 eigenvalue, eigenvector라는 개념이 밥 먹듯 등장합니다. 다른 분야는 잘 모르겠지만 컴퓨터 비전을 공부한다면 누구나 맞닥뜨릴 Linear Transformation(선형 변환), Eigenvalue(고윳값), Eigenvector(고유 벡터)에 대해 간단히 리뷰하면 좋을 것 같습니다. Linear Transformation (선형 변환) Linear Transformation이란 무엇일까요? 거두절미하고 다음의 두 가지 성질을 만족하면 됩니다. 가산성(additivity): 두 벡터를 선형 변환한 결과를 더한 값은, 두 벡터를 각각 선형 변환한 결과를 더한 것과 같습니다. $$T(u+v) = T(u) + T(v)$$ 동차성(homogeneit.. 2023. 4. 15.
[면접 꿀팁] Similarity Search에 대하여 안녕하세요, 오늘은 Similarity Search에 대해 간단하게 소개해보려고 합니다. 경험상 실무에서 꽤 중요하게 다뤄지는 것에 반해 그 개념을 정확히 짚고 넘어갈 기회가 많지 않았던 것 같습니다. 그래서 리뷰해보겠습니다. Similarity Search란? Similarity Search란 단어의 직역대로 나와 비슷한 친구를 찾는 알고리즘을 말합니다. 머신러닝에서 Unsupervised method로 분류되고 같은 표현으로 Clustering 등으로 말하기도 합니다. 이게 왜 중요한 걸까요?? 두가지 예시를 들어보겠습니다. 나는 지금 딥러닝을 활용한 Classifier를 배포하려고 한다. 이 엔진은 현재 물품 1,000종에 대해 분류를 해주는 훌륭한 친구지만 앞으로 품목이 얼마나 더 늘어날 지 가늠.. 2023. 4. 14.
[면접 꿀팁] Probability와 Likelihood의 차이점 안녕하세요, 오늘은 머신러닝을 한다면 한번쯤은 들어보셨을 Probability와 Likelihood에 대해 비교하며 설명해드릴까 합니다. 너무 중요한 개념인만큼 정확히 이해해놓는 노력이 필요할 것 같습니다. 그럼 개념과 어떤 차이점이 있는지 리뷰해보겠습니다. Probability (확률) Probability는 특정 사건이 일어날 확률 확률은 어떤 사전 지식이나 가정을 바탕으로 어떤 사건이 발생할 가능성을 측정하는 값입니다. 이 값은 0과 1사이의 수로, 0은 불가능함을, 1은 확실함을 나타냅니다. 설명이 조금 직관적이지 않나요? 몇가지 예를 들면 금방 이해하실 것 같습니다. 동전을 던졌을 때 앞면이 나올 확률은 1/2이다. 주사위를 던졌을 때 3이 나올 확률은 1/6이다. 로또 1등에 당첨될 확률은 1.. 2023. 4. 11.
[면접 꿀팁] Python에서 메모리를 어떻게 관리하는가? 안녕하세요, 요즘은 인공지능을 다루는 분들이 늘어나고 또한 금융이나 비개발자분들께서도 배우기 쉬운 언어로 파이썬을 선택함에 따라 파이썬은 너무나 대중적인 언어가 되었습니다. 특히 전문적으로 개발하시는 분들은 프로그램의 메모리 관리에 대해 한번쯤은 문제를 겪으셨을텐데요. 오늘은 파이썬에서 가비지 콜렉션(Garbage Collection)이라는 개념에 대해 간단히 다뤄보겠습니다. Python의 메모리 관리 먼저, 파이썬은 자동으로 메모리를 관리하는 고급 프로그래밍 언어입니다. 이것은 개발자가 직접 메모리 할당 및 해제를 관리하지 않고도 메모리 관리를 자동으로 처리할 수 있다는 것을 의미합니다. 파이썬에서 메모리 관리는 참조 계수(reference counting) 기반으로 이루어집니다. 이는 객체가 생성될 .. 2023. 4. 2.
[면접 꿀팁] 함수형 프로그래밍(Functional Programming)이란? 함수형 프로그래밍(Functional Programming)은 백엔드/프론트엔드를 막론하고 자주 질문 받으며 실제로 현업에서도 자주 다루는 개념입니다. 함수형 프로그래밍에 대해 설명해보도록 하겠습니다. 함수형 프로그래밍이란? 함수형 프로그래밍(Functional Programming)은 프로그래밍 패러다임 중 하나로, 순수 함수와 불변성(Immutable)을 강조하며, 프로그램의 상태 변경을 최소화하는 것을 목표로 합니다. 함수형 프로그래밍은 수학적 함수의 개념에 기반을 두고 있으며, 이를 통해 코드의 간결성, 모듈성 및 예측 가능성을 높일 수 있습니다. 함수형 프로그래밍의 주요 특징 순수 함수(Pure functions): 순수 함수는 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 영향.. 2023. 3. 31.
[면접 꿀팁] 배열(Array)과 링크드 리스트(Linked list)의 특징 안녕하세요? 오늘은 신입 개발자 면접에서 빈번하게 등장하는 배열과 링크드 리스트의 특징을 파악하고 비교해보겠습니다. 일단, 배열과 링크드 리스트는 데이터를 저장하고 관리하는 데 사용되는 두 가지 기본적인 자료 구조입니다. 배열(Array) 연속된 메모리 공간에 데이터를 저장합니다. 인덱스를 사용하여 원소에 빠르게 접근할 수 있습니다. O(1)의 시간 복잡도를 가집니다. 고정된 크기를 가지며, 크기 변경이 어렵습니다. 미리 할당된 메모리 크기를 초과하면 새로운 메모리 공간을 할당하고 데이터를 복사해야 합니다. 원소를 삽입하거나 삭제할 때, 원소들을 이동시켜야 하므로 시간이 오래 걸릴 수 있습니다. 일반적으로 O(n)의 시간 복잡도를 가집니다. 메모리 사용이 효율적입니다. 각 원소는 인덱스로 접근되며, 추가.. 2023. 3. 31.