Netflix L4 Phone Screen
2041

first an easy followed by medium
not complicated as it sounds

Question :

  1. Given a Json Object in the form of Map<String, Object>, and given a query to match a key by path (similar to jq), extract its value.
  2. How can you extend the functionality to support any key (“*”) match?

Note: No json parsing required.

Examples:

dict =  '{"fname": "masked_first_name", "lname": "masked_last_name", "contacts": {"cell": "+1(999).999.9999", "home": "+1(333).333.3333" }}' 
key = ".contacts.cell"
res =+1(999).999.9999
dict =  '{"fname": "masked_first_name", "lname": "masked_last_name", "contacts": {"cell": "+1(999).999.9999", "home": "+1(333).333.3333" }}'  
key = ".fname"
res =  “masked_first_name”

dict = '{"fname": "masked_first_name", "lname": "masked_last_name", "contacts”:{“home”:12345}}key = ".contacts.cell"
res =  null


dict '{"fname": "jomasked_first_namehn", "lname": "masked_last_name", "contacts": {"cell": "+1(999).999.9999", "home": "+1(333).333.3333" }}'
key =  ".*.cell"
res = ["+1(999).999.9999"]

dict = '{"fname": "jomasked_first_namehn", "lname": {"cell": "+1(888).999.9999", "home": "+1(555).333.3333" }, "contacts": {"cell": "+1(999).999.9999", "home": "+1(333).333.3333" }}'
key =  ".*.cell" 
res = ["+1(888).999.9999", "+1(999).999.9999"]

key = contact.*
res = {'cell': '+1(999).999.9999', 'home': '+1(333).333.3333', 'cells': {'cell1': '121211'}}


Comments (1)