> 백엔드 개발 > PHP 튜토리얼 > 프로그래머 인터뷰: 상위 42개 전화 인터뷰 질문 및 답변(1부)

프로그래머 인터뷰: 상위 42개 전화 인터뷰 질문 및 답변(1부)

WBOY
풀어 주다: 2016-08-08 09:27:26
원래의
1119명이 탐색했습니다.

올해는 2015입니다. 최근 몇 년 동안은 대면(전화 면접)이 후보자를 선별하는 방식으로 가장 인기가 많았습니다. 프로그래머 위치를 위해. 고용주와 고용주 모두가 쉽게 알아갈 수 있습니다. 지원자는 미래 고용주의 위치로 갈 필요가 없으며 면접관은 추가 준비를 할 필요가 없습니다. 이것은 프로그래머 인터뷰 질문을 다루는 내 기사의 두 번째 부분입니다. 첫 번째 섹션이 코딩 문제에 너무 집중했다는 피드백을 받았고, 많은 프로그래머들이 전기 문제에 대해서도 비슷한 목록을 만들길 원했습니다. 성공적으로 면접을 통과하고 다음 라운드로 진출하기 위해서는 직무 요구사항과 관련된 모든 질문에 충분히 답변해야 합니다. 대부분의 JavaC++ 개발자 인터뷰에서는 해당 프로그래밍 언어에 대한 문제뿐만 아니라 SQL, XML, UNIX 등의 기타 기술, 일반 프로그래밍, 객체 지향 프로그래밍, 데이터 구조 및 알고리즘, 네트워킹, 코딩 및 기타 업무 측면. 프로그래머의 취업 면접은 다양하기 때문에 면접관이 기대하는 방식으로 자신을 표현하려면 특별한 기술이 필요합니다.

중요한 점은 면접 질문에 답할 때 핵심 사항을 일찍 꺼내고 항상 Crucial 답변을 하라는 것입니다. 면접관들의 질문은 폭넓은 주제를 다루는 경향이 있기 때문에 "알았어, 알아"와 같은 공허한 말보다는 비판적인 답변을 선호합니다. 대면 인터뷰를 통해 문제를 더 깊이 설명할 수 있는 기회를 갖게 됩니다. 그건 그렇고, 이것은 어렵고 빠른 규칙이 아니며 면접관이 귀하의 답변에 어떻게 반응하는지에 따라 그가 어떤 종류의 응답을 기대하는지 아이디어를 얻을 수 있습니다. 그가 질문을 계속하고 당신이 더 말해주기를 기대한다면, 당신은 더 말해야 합니다. 하지만 그가 즉시 다음 질문으로 넘어가면 명확하고 간결하게 대답해야 합니다. 이 글에서는 전자공학에 적용되는 몇 가지 일반적이고 흥미로운 프로그래밍 문제를 여러분과 공유하겠습니다. 대부분은 Barclays, Citi, Nomura , Infosys, TCS, CTS 등의 은행, Tech MahindraHCL과 같은 회사에서 서비스를 제공하고 있습니다. 아까도 말했듯이 면접 질문은 무작위로 뽑혔는데, 면접관이 면접 때 테스트하고 싶었던 부분이 바로 기초지식에 기초한 질문이 대부분이었습니다. 이러한 질문의 대부분은 주니어 개발자(2 ~ 5년)를 대상으로 하지만, 시니어 및 베테랑 프로그래머도 여전히 사용할 수 있습니다. 자신의 인터뷰를 위한 질문으로 사용하세요. 면접관인 경우 이러한 질문을 사용하여 개발 직책에 대한 후보자를 신속하게 선별할 수 있습니다. 여기서는 긴 답변에 대한 링크와 함께 짧은 답변을 제공하겠습니다.

다음은 거의 42개의 프로그래머 면접 질문 목록입니다. 이러한 질문은 프로그래밍의 기초를 기반으로 하기 때문에 프로그래머, 개발자, 소프트웨어 엔지니어, 테스트 및 운영 엔지니어를 테스트하는 데 사용할 수 있습니다. 그러나 프로그래머와 개발자에게 가장 적합합니다. 그런데 Java 개발자이고 Java 전자 면접 질문을 찾고 있다면 해당 목록을 확인해 보세요. 이 목록은 보다 일반적이며 Python, Ruby, Perl을 포함한 모든 프로그래머에게 적용됩니다. C# 개발자.

1. 해시 테이블, 바이너리 트리, 링크드 리스트에서 요소를 가져오는 데 시간이 얼마나 걸립니까? ? 수백만 개의 레코드가 있다면 어떻게 될까요?

해시 테이블에는 O(1) 시간이 필요하고, 이진 트리에는 O(logN)(N은 트리의 노드 수 )이고, 연결된 목록에는 O(N)(N이 필요합니다. 연결리스트의 노드 수). 데이터 구조가 제대로 작동하는 경우(예: 해시 테이블에 충돌이 없거나 상대적으로 적고, 이진 트리가 균형을 이룬 경우) 수백만 개의 레코드가 효율성에 영향을 미치지 않습니다. 제대로 작동하지 않으면 레코드 수가 늘어날수록 효율성이 떨어집니다.

2.

오버라이딩(오버라이딩)무거워요 (오버로딩)의 차이점은 무엇인가요? (자세한 답변)

오버라이드는 런타임에 결정되고, 오버로딩은 컴파일 타임에 결정됩니다. 그리고 오버라이딩과 오버로딩의 메커니즘이 다릅니다. 예를 들어

Java에서는 오버로드된 메서드의 시그니처가 원래 메서드의 시그니처와 달라야 하지만 오버라이딩 시그니처는 다음과 같아야 합니다. 동일합니다.

3. 프로세스 포크

스레드 생성의 차이점은 무엇인가요?

프로세스를

포크하면 새 프로세스는 상위 프로세스와 동일한 코드를 다른 메모리 공간에서 실행합니다. 그러나 기존 프로세스에서 스레드를 생성하면 새로운 코드 실행 경로가 생성되지만 동일한 메모리 공간을 공유합니다.

4. 크리티컬 섹션이란? (답변)

크리티컬 섹션은 멀티 스레드에서 동시에 하나의 스레드에 의해서만 실행될 수 있는 매우 중요한 코드 섹션입니다. . 중요한 섹션은 세마포어나 뮤텍스로 보호할 수 있습니다. Java에서는 synchronized 키워드나 ReentrantLock을 사용하여 중요도를 보호할 수 있습니다. 구역.

5. 값 유형과 참조 유형의 차이점은 무엇인가요? (답변)

값 유형은 더욱 최적화된 유형이며 항상 불변입니다. (불변) 예를 들어, Javaoriginalint, long, double 그리고 플로트. 참조 유형은 변경 가능하거나 변경 불가능할 수 있는 객체를 가리킵니다. 값 유형은 값을 가리키고 참조 유형은 개체를 가리킨다고 말할 수도 있습니다.

6. 프로세스에서 힙과 스택은 무엇인가요? (자세한 답변)

같은 과정에도 메모리 영역이 2개가 있습니다. Java의 경우 스택은 객체를 가리키는 기본 값과 참조 유형을 저장하는 데 사용되지만 객체 자체는 항상 힙에 생성됩니다. 힙과 스택의 중요한 차이점은 힙 메모리가 모든 스레드에서 공유되지만 각 스레드에는 자체 스택이 있다는 것입니다.

7. 버전관리란? (답변)

버전 관리는 SVN과 같이 코드를 저장하고 코드 기반 버전을 관리하는 데 사용되는 소프트웨어입니다. , CVS, Git, PerforceClearCase . 코드를 비교하고, 코드를 검토하고, 이전 안정 버전에서 빌드하는 데 효율적입니다. 모든 전문 개발자는 일종의 버전 제어 도구를 사용합니다. 그렇지 않으면 특히 20명의 개발자가 동일한 코드 기반에서 작업하는 경우 코드를 효과적으로 관리할 수 없습니다. 버전 제어 도구는 코드 기반 일관성을 유지하고 코드 충돌을 처리하는 데 매우 중요한 역할을 합니다.

8. 강형 프로그래밍 언어란 무엇인가요? (답변)

강력한 유형의 언어에서 컴파일러는 유형의 정확성을 보장합니다. 예를 들어 문자열을 사용할 수 없습니다. 숫자를 유형별로 저장하거나 그 반대로 저장합니다. Java는 강력한 유형의 언어이므로 다양한 데이터 유형이 있습니다(예: int, float , 문자열, 문자, 부울 등 ). 호환되는 값만 해당 유형에 저장할 수 있습니다. 대조적으로, 약한 유형의 언어는 컴파일 타임에 유형 검사가 필요하지 않으며 컨텍스트에 따라 값을 처리합니다. PythonPerl은 숫자로 구성된 문자열을 숫자 유형으로 저장할 수 있는 일반적인 예입니다.

9. 유효성을 설명할 수 있나요? (유효) XML 및 Well-formed (well-formed)XML 차이점은 무엇입니까?

올바른 형식의 XML 에 루트 요소가 있고, 모든 태그가 올바르게 닫히고, 속성이 올바르게 정의되었으며, 해당 값이 정확합니다. 따옴표가 추가됩니다. 반면 유효한 XMLXSD 파일 또는 스키마 (schema)를 기반으로 할 수 있습니다. ) 확인하세요. 따라서 XML은 형식은 양호하지만 유효하지 않을 수 있습니다(스키마에서 허용하지 않는 태그가 포함되어 있기 때문입니다).

10. DOMSAX 구문 분석기란? 차이점은 무엇입니까? (자세한 답변)

DOM파서는 메모리에 상주하며 XML 전체를 변환합니다. 파일이 메모리에 로드되고 구문 분석을 위해 DOM 트리가 생성됩니다. SAX파서는 이벤트 기반 파서이므로 XML 문서를 구문 분석합니다. 파싱 ​​방식에 따르면 DOM 파서는 메모리 공간을 많이 차지하기 때문에 대용량 XML 파일에는 적합하지 않습니다. 프로세스에 메모리가 부족할 수 있습니다. 대용량 파일은 SAX를 사용하여 분석해야 합니다. 작은 파일의 경우 DOMSAX보다 훨씬 빠른 경향이 있습니다.

11. 스레드와 프로세스는 어떤 관계인가요? (자세한 답변)

프로세스는 여러 스레드를 가질 수 있지만 스레드는 항상 유일한 프로세스에 속합니다. 두 프로세스는 프로세스 간 통신을 위해 공유 메모리를 통해 의도적으로 통신하지 않는 한 메모리 공간을 공유할 수 없습니다. 그러나 동일한 프로세스의 두 스레드는 항상 동일한 메모리를 공유합니다.

12. 불변(불변) 클래스 무엇 무슨 뜻인가요? (자세한 답변)

클래스 생성 후 상태를 변경할 수 없는 경우 클래스는 변경 불가능합니다. 예를 들어 Java에서는 String입니다. "Java"와 같은 문자열을 생성하면 더 이상 해당 내용을 변경할 수 없습니다. 이 문자열을 변경하면(예: 대문자로 변환, 다른 문자열과 연결) 새 개체가 생성됩니다. 불변 객체는 동기화에 대해 걱정할 필요 없이 프로세스 간에 공유될 수 있기 때문에 병렬 프로그래밍에 유용합니다. 실제로 전체 프로그래밍 기능 모델은 불변 객체를 기반으로 구축되었습니다.

13. 모의를 만들어야 하는 이유(mock) 객체? (답변)

모의 객체는 독립적인 소프트웨어 단위, 즉 스텁을 테스트할 때 유용합니다(스텁) 및 mocking은 자동화된 단위 테스트를 생성하기 위한 강력한 도구입니다. 환율을 표시하는 프로그램을 작성 중이지만 연결할 수 있는 URL이 없다고 가정해 보겠습니다. 이제 코드를 테스트하려면 모의 개체를 사용할 수 있습니다. Java의 세계에는 Mockito와 같이 강력한 모의 객체를 생성할 수 있는 프레임워크가 많이 있습니다. PowerMock.

14. SQL 인젝션이란?

SQL 주입은 침입자가 시스템에서 데이터를 훔칠 수 있는 보안 취약점입니다. 사용자로부터 입력을 받아 유효성 검사 없이 SQL 쿼리를 생성하는 모든 시스템은 SQL 주입 공격에 취약합니다. 이러한 시스템에서는 침입자가 데이터 대신 SQL 코드를 입력하여 추가 데이터를 얻을 수 있다. 이 취약점을 악용하여 민감한 정보(예: 사용자 ID, 비밀번호, 개인정보)를 수집한 사례가 많이 있습니다. Java에서는 Prepared 문을 사용하여 SQL주사.

15.

SQL에서는 내부 조인 What (내부 조인)과 왼쪽 조인(왼쪽 조인)의 차이점은 무엇인가요? (답변)SQL

에는 내부 조인과 외부 조인이라는 두 가지 주요 연결 유형이 있습니다. 외부 조인에는 오른쪽 외부 조인과 왼쪽 외부 조인이 있습니다. 내부 조인과 왼쪽 조인의 주요 차이점은 내부 조인에서는 두 테이블 모두와 일치하는 레코드만 선택되는 반면, 왼쪽 조인에서는 두 테이블 모두와 일치하는 레코드와 왼쪽 테이블의 모든 레코드가 선택된다는 것입니다. 종종 왼쪽 조인이 필요한 "all"이 포함된 쿼리에 주의하세요. 예를 들어 모든 부서와 해당 직원 수를 찾으려면 SQL 쿼리를 작성하세요. 내부 조인을 사용하여 이 쿼리를 처리하면 아무도 작업하지 않는 빈 부서를 놓칠 수 있습니다.

16. MVC에서

V는 무엇을 의미하나요? 에 대해서는 무슨 뜻인가요? (답변)MVC

패턴에서는 V 는 보기(보기)입니다. 보기는 웹 페이지와 같이 사용자가 보는 것입니다. 이는 애플리케이션 개발을 위한 매우 중요한 디자인 패턴입니다. 이는 서로 다른 모듈이 다른 모듈에 영향을 주지 않고 독립적으로 수정될 수 있다는 원칙을 기반으로 합니다. Java 세계에는 와 같이 MVC 패턴을 제공하는 오픈 소스 프레임워크가 많이 있습니다. Struts 2Spring MVC. 참고로 M은 모델 (Model), C를 의미합니다. 제어용 컨트롤러(컨트롤러). 모델은 컨트롤러가 요청을 올바른 처리 장치에 배포하는 데 사용하는 사용자, 직원, 주문과 같은 실제 비즈니스 개체입니다.

17. 클래스와 객체의 차이점은 무엇인가요?

(자세한 답변)클래스는 객체를 만드는 데 사용되는 디자인 도면입니다. 클래스에는 코드와 동작이 포함되고 객체에는 상태와 동작이 포함됩니다. 객체를 생성하려면 객체의 구조를 표현하는 클래스를 생성해야 합니다. 클래스는 메모리의 객체를 매핑하는 데에도 사용되며 Java에서는 JVM이 이 작업을 수행합니다.

18. 루스커플링(루스커플링)이란?

희소 결합은 추구할 가치가 있는 소프트웨어 기능으로, 소프트웨어의 한 부분을 수정해도 다른 부분에는 영향을 주지 않습니다. 예를 들어 느슨하게 결합된 소프트웨어에서는 UI 레이아웃을 변경해도 백엔드 클래스 구조에 영향을 주어서는 안 됩니다.

19. 구성(구성), 집합 (집계)와 협회(협회)의 차이점은 무엇인가요? (자세한 답변)

연관이란 두 객체가 서로 연관되어 있다는 뜻이다. 결합은 연합의 한 형태입니다. 즉, 하나의 객체는 여러 객체로 구성되지만 공존해야 합니다. 예를 들어 인간의 신체는 독립적인 기관으로 구성되어 있어 생존할 수 없으며 신체 내에서 기능해야 합니다. 집합은 연합의 한 형태이기도 하며 객체의 집합을 나타냅니다. 예를 들어 도시는 주민의 집합입니다.

20. 인터페이스와 추상 클래스의 차이점은 무엇인가요? (자세한 답변)

모든 프로그래머 인터뷰에서 가장 고전적인 질문입니다. 인터페이스는 구체적인 내용이 없는 가장 순수한 형태의 추상화입니다. 추상 클래스는 추상적인 것과 구체적인 것의 조합입니다. 이러한 구별은 언어에 따라 다를 수 있습니다. 예를 들어 Java에서는 (extend) 확장할 수 있지만 다음에서만 상속할 수 있습니다. 추상 수업. 자세한 내용은 자세한 답변에서 확인할 수 있습니다.

21. 유닛 테스팅이란? (답변)

유닛 테스트는 (전체 애플리케이션이 아닌) 독립된 유닛의 기능을 테스트하는 방법입니다. 다양한 언어로 단위 테스트를 위한 많은 도구가 있습니다. 예를 들어 Java에서는 JUnit 또는 TestNG를 사용하여 작성할 수 있습니다. 단위 테스트. 단위 테스트는 빌드 시 자동으로 실행되거나 지속적인 환경(예: Jenkins)에서 실행되는 경우가 많습니다.

무료로 받으세요LAMP밴드 오브 브라더스 원본 PHP튜토리얼CD/ 세부사항PHP》Essential 버전, 자세한 내용은 공식 웹사이트 고객 서비스에 문의하세요: http:/ /www.lampbrother.net

PHPCMS2차 개발http://yun.itxdl.cn/online /phpcms/index.php ?u=5

WeChat 개발http://yun.itxdl. cn/online/weixin/ index.php?u=5

모바일 인터넷 서버측 개발http ://yun.itxdl.cn/online/server/index.php?u=5

자바스크립트강좌http://yun.itxdl.cn/online/js/index.php?u=5

CTO훈련캠프http://yun.itxdl.cn/online/cto/index.php?u=5

위 내용은 프로그래머 인터뷰를 소개합니다: 전화 인터뷰에 관한 상위 42가지 질문 및 답변(1부) 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿