단상,  컴퓨터와 인터넷

[번역] 경력 소프트웨어 기술자를 위한 새로운 면접 질문들

원문: New Interview Questions for Senior Software Engineers

학교 선배님께서 Facebook에 올리신 글을 보고 도움이 될 듯 하여 정독하기 위해 번역해본다. 주로 Java 쪽에서 아키텍쳐링이나 모델링을 했던 개발자들에게 유용한 면접 질문일 것으로 생각된다.

  • What is something substantive that you’ve done to improve as a developer in your career?
    당신 경력에서 개발자로서 향상시키기 위해 해 왔던 중요한 것은 무엇인가요?
  • Would you call yourself a craftsman (craftsperson) and what does that word mean to you?
    당신 자신을 장인이라고 부르나요? 그러면 그 단어는 당신에게 무슨 의미가 있나요?
  • Implement a <basic data structure> using <some language> on <paper|whiteboard|notepad>.
    <종이|칠판|노트패드>에 <어떤 언어>로 <기본적인 자료 구조>를 구현해보세요.
  • What is SOLID?
    SOLID는 무슨 의미인가요?
  • Why is the Single Responsibility Principle important?
    왜 단독 책임 원칙이 중요한가요?
  • What is Inversion of Control? How does that relate to dependency injection?
    제어의 역전이 무슨 의미인가요? 어떻게 의존성 주입에 관련되어 있나요?
  • How does a 3 tier application differ from a 2 tier one?
    3 계층 애플리케이션은 2 계층 애플리케이션과 어떻게 다르죠?
  • Why are interfaces important?
    왜 인터페이스가 중요한가요?
  • What is the Repository pattern? The Factory Pattern? Why are patterns important?
    저장소 패턴은 무엇인가요? 팩토리 패턴은? 왜 패턴이 중요하죠?
  • What are some examples of anti-patterns?
    반-패턴의 대표적인 예는 무엇인가요?
  • Who are the Gang of Four? Why should you care?
    Gang of Four는 누군가요? 왜 신경써야 할까요?
  • How do the MVP, MVC, and MVVM patterns relate? When are they appropriate?
    MVP, MVC, MVMM 패턴은 어떻게 연관되어 있나요? 언제 적절한가요?
  • Explain the concept of Separation of Concerns and it’s pros and cons.
    관심의 분리의 개념과 그것의 찬반에 대해서 설명해보세요.
  • Name three primary attributes of object-oriented design. Describe what they mean and why they’re important.
    객체지향 설계에서 3가지 주요 속성의 이름을 대 보세요. 그게 무슨 의미인지, 왜 중요한지 서술해보세요.
  • Describe a pattern that is NOT the Factory Pattern? How is it used and when?
    팩토리 패턴이 아닌 다른 패턴 하나를 서술해보세요. 언제 어떻게 사용되죠?
  • You have just been put in charge of a legacy code project with maintainability problems. What kind of things would you look to improve to get the project on a stable footing?
    유지보수 문제가 있는 레거시 코드 프로젝트를 맡게 되었다면 프로젝트를 안정적인 기초 위에 놓기 위해 향상시키기 위해 어떤 종류의 것들을 고려할 것인가요?
  • Show me a portfolio of all the applications you worked on, and tell me how you contributed to design them.
    당신이 일했던 모든 애플리케이션들의 포트폴리오를 보여주세요. 그리고 그것들을 설계하기 위해 당신이 어떻게 공헌했는지 말해주세요.
  • What are some alternate ways to store data other than a relational database? Why would you do that, and what are the trade-offs?
    데이터를 저장하기 위해 관계형 데이터베이스 이외의 대안 몇가지가 뭐가 있을까요? 왜 그걸 사용하죠? 그리고 트레이드-오프는 무엇일까요?
  • Explain the concept of convention over configuration, and talk about an example of convention over configuration you have seen in the wild.
    “Convention over configuration의 개념을 설명해보세요. 그리고 실전에서 봤던 예제에 대해서 말해보세요.
  • Explain the differences between stateless and stateful systems, and impacts of state on parallelism.
    stateless와 stateful 시스템의 차이점과 상태가 병렬화에 주는 영향에 대해서 설명해보세요.
  • Discuss the differences between Mocks and Stubs/Fakes and where you might use them (answers aren’t that important here, just the discussion that would ensue).
    Mock과 Stub/Fake의 차이점과 어디서 사용할 수 있는지 논해보세요.
  • Discuss the concept of YAGNI and explain something you did recently that adhered to this practice.
    YAGNI의 개념에 대해서 논하고, 이 실습에 집착하기 위해 최근에 했던 것들을 설명해보세요.
  • Explain what is meant by a sandbox, why you would use one, and identify examples of sandboxes in the wild.
    샌드박스가 의미하는 바와 왜 샌드박스를 사용하는지 설명하세요. 그리고 실전에서 샌드박스의 예를 들어보세요.
  • Concurrency
    동시성

    • What’s the difference between Locking and Lockless (Optimistic and Pessimistic) concurrency models?
      동시성 모델에서 Locking과 Lockless (Optimistic/Pessimistic)의 차이점은 무엇인가요?
    • What kinds of problems can you hit with locking model? And a lockless model?
      Locking 모델에서 어떤 종류의 문제점을 만나게 되나요? Lockless 모델에서는?
    • What trade offs do you have for resource contention?
      자원 경쟁을 위해 가지게 되는 트레이드-오프는 무엇인가요?
    • How might a task-based model differ from a threaded model?
      작업 기반 모델이 thread 모델과 어떻게 다를 수 있나요?
    • What’s the difference between asynchrony and concurrency?
      비동기성과 동시성의 차이점은 무엇인가요?
  • Are you still writing code? Do you love it?
    당신은 여전히 코드를 작성하고 있나요? 그걸 좋아하나요?
  • You’ve just been assigned to a project in a new technology how would you get started?
    당신이 새로운 기술이 필요한 프로젝트에 배정되었다면 어떻게 시작할 겁니까?
  • How does the addition of Service Orientation change systems? When is it appropriate to use?
    서비스 지향의 추가가 시스템들을 어떻게 변화시키나요? 언제 사용하는 게 적절할까요?
  • What do you do to stay abreast of the latest technologies and tools?
    최신 기술과 도구에 뒤떨어지지 않기 위해 무엇을 합니까?
  • What is the difference between “set” logic, and “procedural” logic. When would you use each one and why?
    집합 로직과 절차적 로직 사이의 차이점은 무엇인가요? 각각을 언제, 그리고 왜 사용합니까?
  • What Source Control systems have you worked with?
    어떤 소스 제어 시스템을 가지고 일하고 있습니까?
  • What is Continuous Integration? Have you used it and why is it important?
    연속적인 통합(CI)이 무엇인가요? 사용해 본 적이 있나요? 그리고 왜 중요할까요?
  • Describe a software development life cycle that you’ve managed.
    당신이 다루는 소프트웨어 개발 생명 주기(life cycle)을 설명해보세요.
  • How do you react to people criticizing your code/documents?
    사람들이 당신의 코드와 문서를 비판하는 것에 어떻게 반응합니까?
  • Whose blogs or podcasts do you follow? Do you blog or podcast?
    누구의 블로그나 팟캐스트를 구독하죠? 당신이 직접 블로그나 팟캐스트를 하나요?
  • Tell me about some of your hobby projects that you’ve written in your off time.
    당신이 업무 외 시간에 작성한 취미 프로젝트에 대해 말해보세요.
  • What is the last programming book you read?
    마지막으로 읽었던 프로그래밍 책은 무엇인가요?
  • Describe, in as much detail as you think is relevant, as deeply as you can, what happens when I type “cnn.com” into a browser and press “Go”.
    브라우저에 “cnn.com”이라고 입력하고 “Go”를 눌렀을 때 무슨 일이 발생하는지, 당신이 생각하기에 적절한 만큼 자세히, 당신히 할 수 있는 만큼 깊게 설명해보세요.
  • Describe the structure and contents of a design document, or a set of design documents, for a multi-tiered web application.
    다층(multi-tier) 웹 애플리케이션을 위한 설계 문서의 구조와 내용에 대해 설명해보세요.
  • What’s so great about <cool web technology of the day>?
    <오늘 날의 멋진 웹 기술>이 뭐가 그렇게 대단한 걸까요?
  • How can you stop your DBA from making off with a list of your users’ passwords?
    DBA가 사용자들의 패스워드 리스트를 훔쳐내는 것을 어떻게 막을 수 있을까요?
  • What do you do when you get stuck with a problem you can’t solve?
    풀 수 없는 문제에 붙잡혔을 때 무엇을 할 건가요?
  • If your database was under a lot of strain, what are the first few things you might consider to speed it up?
    당신의 데이터베이스에 부하가 많이 걸려 있는 상황이라면 속도를 향상시키기 위해 고려해볼 수 있는 처음 몇 가지는 무엇인가요?
  • What is SQL injection?
    SQL 삽입이 무엇인가요?
  • What’s the difference between unit test and integration test?
    단위 테스트와 통합 테스트 사이의 차이점은 무엇인가요?
  • Tell me about 3 times you failed.
    실패했던 3번의 사례를 말해보세요.
  • What is Refactoring ? Have you used it and it is important? Name three common refactorings.
    리팩토링은 무엇인가요? 사용해본 적이 있나요? 중요한가요? 공통적인 리팩토링 3가지를 대보세요.
  • You have two computers, and you want to get data from one to the other. How could you do it?
    두 개의 컴퓨터가 있고 하나로부터 다른 쪽으로 데이터를 보내고 싶은데 어떻게 할까요?
  • Left to your own devices, what would you create?
    당신 소유의 장치 없이 무엇을 만들 겁니까?
  • Given Time, Cost, Client satisfaction and Best Practices, how will you prioritize them for a project you are working on? Explain why.
    시간, 비용, 고객 만족, 모범 숙련(사례)을 고려해 볼때, 당신이 일하고 있는 프로젝트를 위해 어떻게 우선 순위를 매길 겁입니까? 왜 그런지 설명해보세요.
  • What’s the difference between a web server, web farm and web garden? How would your web application need to change for each?
    하나의 웹 서버와 웹 농장(web farm), 웹 정원(web garden)의 차이점은 무엇인가요? 웹 애플리케이션이 각각을 위해 어떤 식으로 변화가 필요할까요?
  • What value do daily builds, automated testing, and peer reviews add to a project? What disadvantages are there?
    일일 빌드, 자동화된 테스팅, 상호 검토가 프로젝트에 어떤 가치를 부여할까요? 어떤 불이익이 있을까요?
  • What elements of OO design are most prone to abuse? How would you mitigate that?
    OO 설계의 어떤 요소들이 가장 남용되기 쉬울까요? 그걸 어떻게 완화시킬 수 있을까요?
  • When do you know your code is ready for production?
    언제 당신의 코드가 상품화 준비가 되는지 알 수 있죠?
  • What’s YAGNI? Is this list of questions an example?
    YAGNI는 무엇인가요? 이 질문 목록이 하나의 예제가 되나요?
  • Describe to me some bad code you’ve read or inherited lately.
    당신이 요즘 읽었거나 상속받은 나쁜 코드를 서술해보세요.

답글 남기기