From bc5f8f14b0a7f00a46fa71f4b50cb395e1e5f766 Mon Sep 17 00:00:00 2001 From: macuretti Date: Thu, 4 Nov 2021 07:12:07 -0300 Subject: [PATCH 1/3] Add company publicness problem --- companies_publicness.png | Bin 0 -> 10885 bytes company_publicness.md | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 companies_publicness.png create mode 100644 company_publicness.md diff --git a/companies_publicness.png b/companies_publicness.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3cd1c219a6d0684f16fbb0ed65b115befaa243 GIT binary patch literal 10885 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 NoRqR;4b&v`KL8#bGhzS$ literal 0 HcmV?d00001 diff --git a/company_publicness.md b/company_publicness.md new file mode 100644 index 0000000..5ebd87e --- /dev/null +++ b/company_publicness.md @@ -0,0 +1,23 @@ +## Problem: Is this company public? + +At AlphaSights, when we consider using an expert for a project, we are careful to record the companies they have worked for in the past. This is important as some of our clients have restrictions on whether the experts they engage with have worked in publicly listed companies. In order to determine whether a company is publicly listed we refer to an external data set. + +Data coming from the external data set keeps track of company hierarchies. +We deem a company public if there is at least one public company in its hierarchy, see example below: + + +If Google UK is marked as a public company, all companies within that hierarchy would be considered public as well (the reverse would also be true - if it’s Alphabet that is marked as public it would deem all the companies in that hierarchy public as well). + + +## Task 1 +Write an algorithm which given a company object will return a boolean value of its publicness. + +Company class +parent : Company; +children : List +name : String + +isPublic(companyName: String, rootNode, publicCompanyNames: Set) : boolean + +Would return true for every company in the hierarchy above. + From bb0cb7013503824701d7ea91fecc1d6268f9b56c Mon Sep 17 00:00:00 2001 From: macuretti Date: Thu, 4 Nov 2021 07:13:57 -0300 Subject: [PATCH 2/3] Move to folder --- .../companies_publicness.png | Bin .../company_publicness.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename companies_publicness.png => company_publicness/companies_publicness.png (100%) rename company_publicness.md => company_publicness/company_publicness.md (100%) diff --git a/companies_publicness.png b/company_publicness/companies_publicness.png similarity index 100% rename from companies_publicness.png rename to company_publicness/companies_publicness.png diff --git a/company_publicness.md b/company_publicness/company_publicness.md similarity index 100% rename from company_publicness.md rename to company_publicness/company_publicness.md From 00903f5fd2c0a923fc454f8197302ced4e01146e Mon Sep 17 00:00:00 2001 From: macuretti Date: Thu, 4 Nov 2021 07:18:46 -0300 Subject: [PATCH 3/3] Update problem --- company_publicness/company_publicness.md | 51 ++++++++++++++---------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/company_publicness/company_publicness.md b/company_publicness/company_publicness.md index 5ebd87e..ff9ba94 100644 --- a/company_publicness/company_publicness.md +++ b/company_publicness/company_publicness.md @@ -1,23 +1,30 @@ -## Problem: Is this company public? - -At AlphaSights, when we consider using an expert for a project, we are careful to record the companies they have worked for in the past. This is important as some of our clients have restrictions on whether the experts they engage with have worked in publicly listed companies. In order to determine whether a company is publicly listed we refer to an external data set. - -Data coming from the external data set keeps track of company hierarchies. -We deem a company public if there is at least one public company in its hierarchy, see example below: - - -If Google UK is marked as a public company, all companies within that hierarchy would be considered public as well (the reverse would also be true - if it’s Alphabet that is marked as public it would deem all the companies in that hierarchy public as well). - - -## Task 1 -Write an algorithm which given a company object will return a boolean value of its publicness. - -Company class -parent : Company; -children : List -name : String - -isPublic(companyName: String, rootNode, publicCompanyNames: Set) : boolean - -Would return true for every company in the hierarchy above. +> This problem has been added to the Questions Library in Coderpad, so for the interview, it can be selected directly from the Questions tab, and the candidate will view this file in the `Instructions` tab on the right panel. + +# Problem: Company Publicness +At AlphaSights, when we consider using an expert for a project, we are careful to record the companies they have worked for in the past. This is important as some of our clients have restrictions on whether the experts they engage with have worked in publicly listed companies. In order to determine whether a company is publicly listed we refer to an external data set. + +Data coming from the external data set keeps track of company hierarchies and which ones are Public. We deem a company public if there is at least one public company in its hierarchy, see example below: + + Alphabet + / | \ + Google Google Google + US Mobile UK + / \ + Android Waze + + +So if any of these Companies has `public=True`, we consider them all to be Public. E.g.: If "Google Mobile" is marked as a public company, all companies within that hierarchy would be considered public as well. If it’s Alphabet that is marked as public, it would deem all the companies in that hierarchy public as well. + + +## Task 1: +Write an algorithm which given a Company object it returns a boolean representing if we consider it internally as a Public company. +```bash +isPublic(company: Company) : boolean +``` + +## Follow up questions +1. How would you store company hierarchies in the database? +2. Considering there are huge hierarchies, how would you improve performance of the publicness calculation? + * Caching publicness value per company, refreshing when hierarchy changes + * In most cases it is ultimate parent that is public - storing link to ultimate parent for every entity and checking it first might improve most of the queries