SQL 및 C # 앱 개발 작업의 경우 인터뷰 담당자는 일반적으로 순수 C 및 포인터를 사용하여 트리, 그래프 및 링크 된 목록 순회에 대해 질문합니다. 3 년 동안 일을했지만 실제로는
주어진 노드의 오른쪽에있는 첫 번째 노드의 경로를 찾으십시오.
예를 들어
이러한 기술이 컴파일러, 드라이버를 작성하고 OS 커널에서 작업해야하는 작업에서 사용될 수 있음을 알 수 있습니다. 그 이외의 기술은 어디에 사용됩니까?
SQL 및 C # 앱 개발 작업의 경우 인터뷰 담당자는 일반적으로 순수 C 및 포인터를 사용하여 트리, 그래프 및 링크 된 목록 순회에 대해 질문합니다. 3 년 동안 일을했지만 실제로는
주어진 노드의 오른쪽에있는 첫 번째 노드의 경로를 찾으십시오.
예를 들어
이러한 기술이 컴파일러, 드라이버를 작성하고 OS 커널에서 작업해야하는 작업에서 사용될 수 있음을 알 수 있습니다. 그 이외의 기술은 어디에 사용됩니까?
답변:
아래의 Joel의 답변을 읽으십시오.
특히 화가 Schmiel과 같은 것을 주목하십시오. 직장에서는 링크 된 목록 을 다시 쓰지 않아도 되지만 Schmiel을 피할 수 있도록 작동 방식을 반드시 알아야합니다.
기본적으로 의사에게 가려면 의사가 해부학을 연구하기를 원할 것입니다. 그녀가 단지 당신에게 일부 항히스타민 제를 처방하고 있지만, 의사는 의과 대학에서 특정 약물이 '열등한 대퇴골에 만성 골절 디아마다 바다'를 가진 사람들에게 나쁘다는 것을 알게 될 것입니다. 그 전문 분야에서 모든 것에 대한 이런 종류의 심층적 인 지식은 때때로 삶과 죽음, 그리고 정보 기술과 제품의 삶과 죽음, 또는 직업 사이에 차이를 만들 수 있습니다.
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
http://www.joelonsoftware.com/articles/fog0000000319.html
"... 적어도 한 학기가 기계에 가까워 지거나 더 높은 수준의 언어로 효율적인 코드를 만들 수 없을 것입니다."
"... 당신은 내가 염려하는 한 미신에 기초한 프로그래밍을하고있다. 기본 해부학을 모르는 의사는 파마 세일즈 베이브의 말에 따라 처방전을 전달한다."
그들은 아니야. 많은 인터뷰는 숙련 된 개발자를 찾는 방법을 모르고 어떤 질문을해야하는지, 질문해서는 안되는 사람들이 수행합니다.
대부분의 면접관은 기술적 인 질문을 전혀하지 않으며 , 참여한 프로젝트 수 (면접관이 많을수록 좋음) 또는 대학 학위 (높을수록 좋음)와 같이 의미는 없지만 측정 할 수있는 것에 집중 합니다. ). 그들은 5 년 동안 대학 학습에 아무 것도 배우지 않고 10 년 동안 전자 상거래 웹 사이트를 다니는 사람을 고용하는 것을 기쁘게 생각하지만 몇 년 후에 대학을 포기하고 몇 년간 일한 사람을 고용하지는 않을 것입니다 기술적으로 어려운 대규모 프로젝트.
적어도 이론적 인 질문을하는 것이 아무 것도 요구하지 않는 것이 좋습니다. 이것은 사람이 충분한 이론 지식을 가지고 있음을 확인하는 이점이 있으며 프로그래밍에 대해 몇 년의 경험이 있지만 실제로 어떤 일이 일어나고 있는지 이해하지 못하는 코더가 아닙니다. 이 이론적 지식이없는 개발자는 일반적으로 목록, 링크 된 목록, 조회 또는 해시 세트의 차이점을 알지 못하고 서로 바꾸어 사용할 수 있습니다.
인터뷰 중에는 아주 좋은 것부터 매우 나쁜 것까지 다양한 질문이있을 수 있습니다.
(해로운) "해당 언어로 작성된 가장 긴 작업 프로그램의 길이는 얼마입니까?"
이 질문은 분명히 잘못되었습니다. 나는 이미 또 다른 대답으로 왜 설명했는지 설명했다 . 면접관이 그러한 질문을하는 회사는 LOC / 월로 개발자의 생산성을 평가할 수있는 강력한 기회가 있습니다. 조언을 해 주어야 할 경우 : 그런 일이 필요하지 않습니다.
이 예는 대답의 시작 부분에서 인용 한 의미가 없지만 측정 가능한 것과 다릅니다 . 여기에서 면접관은 유해한 것으로 잘 알려진 지표를 선택하여 지표에 대한 가장 기본적인 이해조차 얻지 못했음을 보여줍니다.
(나쁜) "Dennis Ritchie는 누구입니까?"
적어도 일부 문화를 갖는 것은 실제로 매우 유용하지만 그러한 질문을하는 것은 요점을 놓치게됩니다. 회사가 소프트웨어 개발 프로젝트를 처리하고 코드를 작성할 수있는 유능한 개발자를 검색하는 경우 C 및 Unix를 만든 사람의 이름을 모르는 사실은 그리 중요하지 않습니다.
(좋은) ".NET 4.5의 새로운 기능은 무엇입니까?"
이 질문은 Dennis Ritchie에 대한 질문보다 훨씬 흥미 롭습니다. 응시자가 .NET 4.5의 새로운 기능에 대해 이야기 할 수 없다면 왜 C # 개발자라고 부릅니까? 그러한 지식의 부족 :
사람이 프로그래밍 언어 나 .NET 커뮤니티에 관심이 없을 수도 있음을 보여줍니다.
다른 개발자가 매일 사용하지 않거나 적어도 자주 사용하는 C # /. NET의 기능에 대한 중요한 지식이 부족할 수 있음을 나타냅니다.
이러한 종류의 질문에 대한 자세한 분석이 포함 된 Jerry Coffin의 답변 도 참조하십시오 .
(평균) "어느 쪽이 더 빠를까요? SSD 또는 RAM?"
이것은 유용하고 그 사람이 충분한 하드웨어 지식을 가지고 있는지 보여 주지만 여전히이 질문에 대답 할 수없는 후보는 거절해서는 안됩니다.
(평균) "스택 및 큐는 어떻게 구현됩니까?"
이것은 당신이 말하는 일종의 질문입니다. 그것들은 이론적이며, 심지어 이론적 일 수도 있지만, 후드에서 무슨 일이 일어나고 있는지 아는 것은 더 나은 코드를 작성하는 데 도움이 될 수 있습니다.
나는이 질문에 대답 할 수없는 후보자를 거부하지는 않지만 관련이 있지만 이론적 인 질문을하는 등 실제로 질문을 알고 있다면 더 신중하게 검사 할 것입니다.
(좋은) "재귀를 사용하지 않고 나무를 어떻게 걸을 수 있습니까?"
응시자가이 질문에 대답하고 FILO / FIFO 및 스택 사용의 이점과 단점에 대해 이야기하고 트리 탐색을위한 재귀에 대해 이야기하는 경우, 이전 질문에 대답 할 수 없었던 것은 중요하지 않습니다.
이 질문을하는 것은 CS 학위를 몇 년 동안 보냈지 만 현장 경험이없는 후보자를 감지하는 좋은 방법이기도합니다.
kojiro의 의견은 흥미롭고 더 긴 답변이 필요합니다.
때로는 자신보다 주제에 대해 더 많이 알아야하므로 누군가를 정확하게 고용해야하기 때문에 정의에 따라 인터뷰를 수행 할 자격이 없습니다. 같은 이유로 면담을하더라도 확실하게 도움을받을 수 없습니다. 당신이 할 수있는 최선의 방법은 이해가 문제 영역과 교차하는 곳을 기반으로 질문을하고 운이 좋기를 바랍니다.
특히 첫 개발자를 고용 할 때나 실제로 회사에서 일하는 모든 개발자보다 숙련 된 개발자를 고용 할 때 좋은 질문을 찾기가 어려울 수 있습니다.
다음은 도움이 될 수있는 세 가지 힌트입니다.
당신이 숙련 생각하는 물어 친구 / 동료 찾기 그 리뷰를 수행합니다. 이를 위해서는 많은 신뢰가 필요하지만 회사에 큰 도움이 될 수 있습니다.
능숙하다고 생각되는 컨설턴트를 찾아서 귀하를 도와 주거나 인터뷰의 기술적 인 부분을 수행하도록 요청하십시오.
Google에 "면접 질문"을 입력하십시오. 꽤 잘 작동하며 일반적으로 가능한 답변을 설명합니다. 예:
파이썬 : 그 열 가지 질문은 꽤 좋아 보입니다. 그것들은 약간 기본적이지만 어쨌든 고용하고 싶지 않은 95 % 후보자를 필터링하는 데 도움이 될 것입니다.
Dave Pinal의 SQL , 평소와 같이 우수합니다.
C # : 너무 기본적이지만 다시 95 % 후보를 필터링합니다.
JavaScript : 질문이 더 개방적이므로 인터뷰가 짧고 개방적이지 않은 비 기술적 질문에 더 많은 시간을 할애하고 싶다면 기술 질문에 좋지 않을 수 있습니다. 이 목록은 여전히 JavaScript의 기본 개념을 이해하지 못하는 후보자를 쉽게 필터링하는 데 도움이됩니다.
이 접근법의 단점은 응시자가 인터뷰를 훈련시키기 위해 동일한 기술을 사용할 수 있다는 것입니다. Google에서 찾은 첫 번째 웹 사이트의 모든 질문을 검토 한 경우 실제로 필요한 기술을 습득하지 않고도 점수를 올릴 수 있습니다.
¹ B- 트리가 무엇인지 설명 할 수 없지만 (일부 데이터 구조는 제외하고) 여전히 올바르게 개발할 수있는 개발자가 있습니다.
인터뷰를 많이 한 회사에서 경험 한 바에 따르면 인터뷰를하는 사람이 제대로 수행하는 방법에 대한 실마리가 없을 가능성이 높습니다. 그래서 그들은 일련의 기술적 질문을 준비하고 그 점수를 계산하여 이력서를 만듭니다. 그러나 여기에는 많은 단점이 있으므로 다음과 같은 이유로 수행하면 안됩니다.
당신은 포인트 지식을 요구합니다. 프로그래머가 해당 영역에서 어떤 작업을 수행하지 않은 경우에도 여전히 훌륭한 동료 일 수는 있지만 특정 답변 만 알 수는 없습니다. 반대로 : 누군가 인터뷰를 준비하고 인터넷에서 특정 질문에 대한 답을 찾았다면, 정답을 얻을 수 있지만 그 사람은 실제 주제에 대한 실마리가 전혀 없을 수도 있습니다.
사람들은 면접에 긴장합니다. 뇌는 공황 상태에있을 때 논리와 같은 많은 고수준 영역을 차단하는이 훌륭한 기능을 가지고 있습니다. 어떤 사람들은 인터뷰와 같은 스트레스가 많은 상황을 처리 할 수 있지만 많은 사람들은 그렇지 않습니다.
하나의 정답을 통해 해당 기술을 테스트하여 특정 답변을 찾을 수 있습니다. 이것은 동료에게 필요한 많은 기술 중 하나이지만 필요한 기술은 아닙니다. 따라서 이러한 질문 중 하나 또는 두 개는 해당 지식 영역을 테스트하기에 충분해야하며 다른 기술을 쿼리해야합니다. 문제 해결 질문 만 포함 된 인터뷰는 동일한 기술을 반복해서 테스트합니다.
좋은 프로그래밍 작업 질문은 무엇입니까?
유명한 "짧은 프로그램을 작성할 수 있습니다"라는 질문은 대부분의 프로그래머가 IDE의 도움 없이는 한 줄의 코드를 작성할 수 없다는 큰 문제가 있습니다. 그러나 프로그래머가 항상 자신의 IDE를 지원하기 때문에 일상적인 작업 환경에서는 전혀 문제가 없습니다. 따라서 신청자는 자신의 도구 (IDE, Google)를 사용할 수 없도록 "오류 찾기", "50 줄의 코드 작성 ..."또는 간단한 질문을 고려해야합니다.
예를 들어 Google에서 도와 주면 1 분 이내에 기본적으로 모든 질문에 대답 할 수 있지만 인터넷에 연결되지 않으면 도움이되지 않는 것 같습니다. 나는 그 아웃소싱 된 메모리를 호출하고, 나를 방해하는 대신, 다른 모든 것을 찾아 볼 수 있기 때문에 정말로 중요한 것에 집중하는 데 도움이된다. 그러나 임의의 API의 세부 사항에 대해 묻지 마십시오. 모름을 알기 때문에 Google에 있습니다.
그러나 좋은 프로그래밍 작업 질문은 API에 대한 지식이나 특수 코딩 기술에 중점을 두어 서는 안됩니다 . 지식을 습득 할 수 있으므로, 이미 알고있는 것을 묻는 것보다 그 사람이 지식을 얼마나 잘 얻는 지 알아내는 것이 좋습니다.
프로그래밍 작업에 대한 좋은 질문은 짧고 간단하며 몇 줄의 코드만으로 모든 언어로 코딩 할 수 있어야하며, 특히 사람이 작업하고 답변을 찾는 방법 에 대해 가능한 많은 정보를 제공해야 합니다. 예:
"선택한 언어로 정수 배열을 취하여 첫 번째 정수가 마지막 정수인 방식으로 순서를 바꾸는 함수를 작성하고 나머지는 그에 따라 이동합니다."
이 시점에서 신청자가 가장 먼저 물어보아야 할 것은 "죄송합니다 ... 과제를 설명해 주시겠습니까?"입니다. 프로그래머에게는 할 일에 대한 명확한 설명이 없었기 때문입니다. 그런 다음 문제의 코드가 오버플로가 오른쪽에 추가되면서 배열의 내용을 왼쪽으로 시프트해야한다는 설명이 이어집니다.
이 작업은 매우 간단하여 모든 형태의 프로그래밍 수준을 졸업 한 사람은 누구나 올바르게 대답 할 수 있어야합니다. 프로그래머가 자신의 도구없이 작업해야하며 긴장하면 논리적으로 생각하는 능력이 저하된다는 점을 고려합니다. 그러나 여전히 왼편이 일반적인 '왼쪽에서 오른쪽으로'본능에 위배되고 사람들이 생각하도록 강요하기 때문에 사람들이 질문이 표현되는 방식과 사람들이 어떻게 접근하는 방식에서 문제를 해결하는 방법을 여전히 알려줍니다. 두 번째.
이 질문에 대한 가능한 많은 답변이 있으므로 코드가 개발되는 방식을 면밀히 검토하는 것이 솔루션이 실제로 작동하는 경우가 아니라 중요한 부분입니다. 신청자가 null을 테스트합니까? 오버플로는 어떻게 저장됩니까? 루프 또는 mem-set이 사용됩니까? 신청자는 코드 정확성을 어떻게 확인합니까? 이 간단한 질문은 그 사람이 어떻게 일하는지에 대한 전체 전기를 알려줍니다.
좋은 일반적인 지식 질문은 무엇입니까?
좋은 질문은 대답하기 쉽고, 광범위한 답변 ( '공개 질문'이라고 함)을 허용하며 가능한 한 빨리 신청자에 대해 가능한 많은 것을 배울 수 있습니다.
예 :
(C ++ 프로그래머에게 문의) : "C ++ 이외의 다른 언어는 무엇입니까?"
이것은 엔트리 레벨의 질문으로, 신청자가 요청한 주제에 대해 아무 것도 모른다면이 순간에 구제 기회를 제공합니다. 이 시점에서 '아니오'는 그 / 그녀가 모두 대답해야 할 몇 가지 질문으로 그를 괴롭히는 것보다 낫습니다. "죄송합니다, 나는 그것에 대해 아무것도 몰라요."
나는 또한 그 사람이 알고있는 다른 어떤 언어를 먼저 설명하고, 또한 그 사람이 프로그래밍 세계에 대해 더 넓은 시각을 얻는 데 얼마나 관심이 있는지, 또는 단일 언어만을 가진 사람 (따라서 특징 / 기술)을 가지고 있는지 알게된다 )보기.
(다음에 Java를 알고 있다고 말하자) : C ++과 Java의 차이점은 무엇입니까? "
이것은 많은 답변을 허용하는 공개 질문이므로 신청자는 적어도 세 가지를 찾을 수 있습니다. (개인 견해) 상위 3 개를 요구하면 가능한 답변이 제한 될뿐만 아니라 지원자가 우선 순위를 기준으로 정렬해야합니다. 여전히 대답하기 쉬워야한다.
이것은 다른 프로그래밍 언어에 대한 많은 심층 지식을 테스트하는 간단한 질문입니다. 이러한 주제에 대한 지식이 얼마나 깊습니까? 이러한 답변을 통해 프로그래밍 언어의 기본 메커니즘에 대한 지식과 실제 이해에 대해 많은 것을 알 수 있습니다. 그 사람이 더티 디테일로 얼마나 많은 돈을 보냈는지, 또는 그 밑에 어떤 일이 생길지 전혀 모르는 채 다양한 API 기능을 함께 연결하는 사람인 경우.
이 엔트리 레벨 질문 개념과 간단한 심층 지식 질문은 대부분의 다른 주제에도 사용될 수 있습니다. 항상이 계획에서 : 구제 질문, 확인 질문, 심층 질문. Java 인터뷰의 또 다른 예 :
이 세 가지 질문은 신청자가 해당 주제에 대해 실제로 알고있는 기술적 인 질문보다 더 많은 정보를 제공하며, 포인트 지식과 스트레스 수준을 고려하여 공정하게 답변합니다.
다음에 누군가가 연속해서 20 개의 코딩 질문을 할 때, 당신은 그 사람이 기본적으로 누군가를 제대로 인터뷰하는 방법을 모른다는 것을 알고 있습니다. ;)
경고 : 이것은 @MainMa의 답변에 대한 주석으로 작성되었지만 1) 주석에 맞추기에는 너무 깁니다 .2) 건설적인 질문에 약간 다른 관점을 추가하여 실제 답변이라고 생각합니다. .
그의 대답에서 @MainMa는 ".NET 4.5의 새로운 기능은 무엇입니까?"를 분류합니다. "좋은"질문으로
나는달라고 간청한다. 그가 말했듯이, 나는 이것이 상당히 평범한 질문이라고 말하고 싶습니다. 좋은 질문은 "오늘 작성하는 코드가 N 년 전에 작성한 코드와 어떻게 다릅니 까?"입니다. (이력서에 기재된 수년간의 경험보다 적은 N의 값, 바람직하게는 약 3 내지 5).
그가 말했듯이, 문제는 암기에 관한 것입니다. 이 후보자가 기능 목록을 완전히 기억 했습니까? 권리에 따라 Microsoft의 목록을 가장 정확하게 인용하는 사람이 승자가되어야합니다.
당신이 신경 써야 할 것은 그의 프로그래밍입니다. 이것이 그의 코드에 어떤 영향을 미쳤습니까? 이 중 어떤 기능을 실제로 사용 합니까? 더 중요한 것은, 어떤 새로운 기능을 언제 사용해야하는지, 그리고 오래된 기능이 언제 제대로 사용되는지에 대한 올바른 판단을 보여 주는가?
"LINQ"라고 말하면 후보자에게 유용한 정보가 거의 없습니다. "LINQ는 개념 X, Y 및 Z를 깨끗하고 직접 표현할 수 있기 때문에 코드를 훨씬 더 간결하고 읽기 쉽게 만들었습니다. 이전에는 다음과 같은 불후 프를 뛰어 넘어 그 일을 수행해야했습니다." (또는 이와 유사한 것)은 후보자, 그가 작성한 코드 종류, 판단, 유연성 등에 대해 많은 것을 알려줍니다. 또한이 사람이 문제에 대해 어떻게 생각하고, 코드를 작성하고, 코드에 대해 생각하는지 등에 대한 후속 질문에 대한 더 많은 기회를 제공합니다. 마지막으로, 이것이 실제로 N 년의 경험을 가진 후보자인지 1 년의 경험을 가진 사람인지 N 번 반복했는지에 대한 더 나은 아이디어를 제공합니다.
요약 : 몇 년 전부터 기능 목록을 인용 할 수 있다는 것은 쓸모가 없으며 실제로 사용할 가능성이있는 후보에 대해서는 거의 알려주지 않습니다. 프로그래머로서의 후보자의 진도는 더 많은 관심을 가질 가능성이 높으므로 더 직접적으로 문의하는 것이 좋습니다.
현실은 대부분의 개발자가 자신의 직업 생활에서하는 대부분의 일상 업무가 사소한 것입니다. 그것은 당신이 면접에서 당신이 직면하는 질문 중 일부는 실제로 당신을 직면하지 않을 수도 있지만, 그런 질문을 할 필요가 없다는 것을 의미하지는 않습니다.
회사에 열린 입장이 있고 현재 사람들을 인터뷰하고 있다고 가정 해 봅시다. 대기열에 이미 20-30 명의 개발자가 있습니다. 그렇다면 해당 직책에 가장 적합한 후보를 어떻게 선택하겠습니까? 이 작업에서 수행해야 할 가장 어려운 작업은 파일 시스템에서 파일을 열고 한 줄씩 데이터를 읽고 약간 수정 한 다음 원래 파일로 되 돌리는 것입니다.
파일을 어떻게 열 것인지 물어볼 것 입니까? 나는 당신이 대답 사이에 큰 차이를 볼 수 없다는 것을 내기했다. 따라서 파일을 여는 방법 만 아는 개발자와 나쁜 실시간 응용 프로그램을 개발할 수있는 방법을 구별 할 수있는 솔루션을 고안해야합니다. 심지어 당신은 그들이 그러한 응용 프로그램을 구축하기를 원하지 않지만 여전히 최고의 후보자를 고용하고 싶습니다.
우리 인생의 다른 것들과 마찬가지로, 더 많은 것을 배우고 배울 필요가 있다는 점이 있습니다. 프로그래머로서 저에게 연결된 목록이 무엇인지 모른다면, 그것은 당신이 전문적인 삶에서 그 시점에 도달하지 못해서 그 특정한 것을 배우고 배울 필요가 있다는 것을 의미합니다. 왜? 단순히 기술 수준을 향상시켜야 할만큼 큰 프로젝트에 참여한 적이 없기 때문입니다. 당신이 엔트리 레벨에 있다면, 나는이 특정 직업에 대한 실무 경험이 없다고 말할 수 있습니다. 그러나 그것이 당신이 그것을 알고 있다면 여전히 당신이 평균 이상으로 자신을 삭감하기에 충분히 동기가 있음을 의미합니다 적어도.
이러한 작업을 수행하는 데 필요한 기술은 거의 중요하지 않습니다. 질문에 대한 접근 방식과 후속 대화에서 입증 된 기술은 요점입니다.
개발자를 인터뷰 할 때 나는 (a) 똑똑한 (b) 일을 수행한다. (c) 어떤 역할을 수행 할 것인지를 찾는다. 어떤 역할을 완수하기 위해서는 기본 지식 수준이 있어야하며, 새로운 기술을 배우고 배우려는 의지가 있어야한다. 기술. 인터뷰는 그 박스들을 체크하는 것에 관한 것입니다.
선호하는 것은 신청자가 작성한 코드를 읽는 것입니다. 통조림 인터뷰 질문은 마음에 들지 않지만 코드가 없을 때 이야기 할 내용을 제공합니다. RAII 또는 IOC 또는 목록 및 수집보다는 IDisposable 구현에 대해 묻고 싶지만 기술적으로 충분히 얻을 수있는 한 아무 것도 할 것 입니다.
면접관의 최악의 두려움은 실제로 코딩에 대해 잘 모르는 사람을 고용하는 것입니다. 가짜를 제거하기 위해 직장 경험 이외의 것에 대해 이야기해야합니다.
이러한 기술이 컴파일러, 드라이버를 작성하고 OS 커널에서 작업해야하는 작업에서 사용될 수 있음을 알 수 있습니다. 그 이외의 기술은 어디에 사용됩니까?
검색 엔진, 웹 서버, 웹 브라우저, 워드 프로세서, 스프레드 시트, 이미지 편집기, 드로잉 프로그램, 데이터베이스 서버, 생물 정보학, 거래 프로그램, 게임, 물리 시뮬레이터 등을 작성하는 것은 어떻습니까.
대부분의 소프트웨어 작업은 데이터베이스에서 데이터를 가져 와서 화면에 올려 놓고 편집하고 화면을 긁어 내고 다시 데이터베이스에 넣는 것과 관련이 있음을 알려드립니다. 그러나 그럼에도 불구하고 플랫폼의 내장 기능으로 인해 제약 조건을 충족시킬 수없는 응용 프로그램이 결국 실행될 수 있습니다. 이 시점에서 알고리즘 및 데이터 구조의 도구 상자를 포기하거나 문제를 해결할 수 있습니다.