"사진 앨범 응용 프로그램을 디자인하는 방법 설명", "이 특정 웹 사이트의 특정 기능을 디자인하는 방법 설명"(예 : Facebook의 추천, Amazon의 추천, 쇼핑 카트, 게임)과 같은 인터뷰 질문을 많이 모았습니다. 검은 색 잭). 그렇다면 수백만의 것이 있다면 어떨까요? 무엇을 바꾸시겠습니까?
이것이 데이터베이스 스키마 또는 많은 클래스 정의 (또는 둘 다)를 기대하는 것 같습니다. 학교의 데이터베이스에 대해 배웠지 만 실제로는 응용 프로그램을 실제로 설계 한 적이 없으며 어디서부터 시작해야하는지, 내가 디자인 한 것이 "좋은"것인지, 확장 가능하도록 변경할 수 있는지를 아는 데 어려움을 겪고 있습니다.
이러한 시스템을 설계 할 때 일반적인 접근 방식이나 사고 과정이 있습니까? 그리고 피해야 할 디자인에서 많은 문제가 발생하는 일반적인 문제 / 문제는 무엇입니까? 누군가 나를 이것들 중 하나 (또는 바람직하게는 각각의 요구를 비교하면서)로 안내하고 설명 할 수 있습니까?
1) 어떤 엔티티가 필요한지 어떻게 알 수 있습니까? 2) 모든 것이 어떤 관계에 있는지 어떻게 결정합니까? 3) 성능 최적화를 설계에 어떻게 통합합니까? 4) 클래스 나 데이터베이스를 사용하여이 작업을 수행합니까? 차이가 있습니까 (예를 들어 실제로 데이터베이스 테이블로 변환 할 수없는 클래스가 있습니까?)
내가 묻는 주된 이유는 "Cdinging the Coding Interview"을 겪고 있고 답변이 저자의 답변과 완전히 달랐기 때문입니다. 나는 수업이 중요한 클래스에 대한 아이디어가 매우 달랐습니다.
내 ATTEMPT : 사진 공유 앱을 사용하면 사진 / 사용자 클래스 / 테이블이 있습니다.
그런 다음 스키마를 만들려고 할 때 사진의 각 사람이 사진에 연결되어 있다고 가정하면 사진과 사용자를 연결하는 테이블이 있다고 생각합니다 (이 테이블이 필요한가? 그렇지 않은 경우 여전히 일반적인 관행입니까? 다 대 다 관계에 대한 별도의 테이블을 갖지 않겠습니까?).
그러나 객체 지향 접근 방식을 사용하려는 경우 대신 모든 작업을 수행하고 다른 두 테이블 / 클래스의 모든 정보를 가진 album이라는 클래스가있을 수 있습니다. 이것은 내가 책에서 주목 한 것입니다-많은 클래스가 있고 기본적으로 모든 정보를 가지고 있고 다른 클래스를 연결하는 하나의 클래스가 있습니까? 예를 들어, 위의 예에서 이것이 적용되는 것처럼 보입니까?
지금은 대규모 시스템에 적합한 아키텍처가 어떻게 보이는지 알 수 없기 때문에 일반적인 규칙 / 지침을 따르기를 바라고 있습니다.