Skip to contentSkip to footer
  • Community
  • Jobs
  • Companies
  • Salaries
  • For employers
      Notifications

      Loading...

      Elevate your career

      Discover your earning potential, land dream jobs, and share work-life insights anonymously.

      employer cover photo
      employer logo
      employer logo

      Primer AI

      Engaged employer

      About
      Reviews
      Pay and benefits
      Jobs
      Interviews
      Interviews
      Related searches: Primer AI reviews | Primer AI jobs | Primer AI salaries | Primer AI benefits
      Primer AI interviewsPrimer AI Software Engineer interviewsPrimer AI interview


      Glassdoor

      • About / Press
      • Awards
      • Blog
      • Research
      • Contact Us
      • Guides

      Employers

      • Free Employer Account
      • Employer Centre
      • Employers Blog

      Information

      • Help
      • Guidelines
      • Terms of Use
      • Privacy and Ad Choices
      • Do Not Sell Or Share My Information
      • Cookie Consent Tool
      • Security

      Work With Us

      • Advertisers
      • Careers
      Download the App

      • Browse by:
      • Companies
      • Jobs
      • Locations
      • Communities
      • Recent posts

      Copyright © 2008-2026. Glassdoor LLC. "Glassdoor," "Worklife Pro," "Bowls" and logo are proprietary trademarks of Glassdoor LLC.

      Company Bowl sample

      Want the inside scoop on your own company?

      Check out your Company Bowl for anonymous work chats.

      Bowls

      Get actionable career advice tailored to you by joining more bowls.

      Followed companies

      Stay ahead in opportunities and insider tips by following your dream companies.

      Job searches

      Get personalised job recommendations and updates by starting your searches.

      Software Engineer Interview

      23 Mar 2019
      Anonymous employee
      San Francisco, CA
      Accepted offer
      Negative experience
      Average interview

      Application

      The process took 3 weeks. I interviewed at Primer AI (San Francisco, CA) in Sept 2018

      Interview

      -recruiter phone call -call with engineer -take-home project -onsite The process was pretty normal and efficient; it took prob less than a month from start to finish. My only gripe is that they were very disorganized around the take home. They sent me an exercise to do, I did it in the next few days, then 2 days later they sent a modified version of it (completely different project). I didn't appreciate having to do all that work just to get an onsite interview. The kicker is that when I did the onsite interview NO ON HAD EVEN LOOKED AT MY TAKE HOME PROJECT. This is ridiculous and a huge red flag. See both versions they sent below.

      Interview questions [5]

      Question 1

      Take Home Project 1: Geodata​ ​Processing Many​ ​of​ ​our​ ​projects​ ​focus​ ​on​ ​processing​ ​and​ ​analyzing​ ​documents​ ​on​ ​a​ ​regular​ ​basis,​ ​some​ ​public and​ ​some​ ​proprietary.​ ​​ ​Because​ ​NLP​ ​is​ ​hard,​ ​let’s​ ​simply​ ​worry​ ​about​ ​processing​ ​location​ ​data​ ​in​ ​a scalable​ ​way. Data​ ​Description The​ ​data​ ​we’re​ ​working​ ​with​ ​is​ ​open​ ​data​ ​from​ ​Geonames.org,​ ​specifically​ a​​ ​ ​compressed​ ​dataset of​ ​global​ ​cities​ ​with​ ​>1K​ ​population​.​ ​​ ​Although​ ​it’s​ ​small​ ​enough​ ​to​ ​be​ ​inspected,​ ​the​ ​.tsv​ ​data fields​ ​are​ ​described​ ​in​ ​plain-text​ ​form​ ​at​ ​​the​ ​bottom​ ​of​ ​the​ ​index​ ​page​.​ ​​ ​There’s​ ​about​ ​150K​ ​cities in​ ​total. Processing Most​ ​data​ ​we​ ​process​ ​is​ ​normalized​ ​to​ ​a​ ​particular​ ​form​ ​so​ ​we​ ​can​ ​make​ ​some​ ​generalizable assumptions​ ​about​ ​the​ ​information​ ​we​ ​have​ ​access​ ​to.​ ​​ ​For​ ​locations,​ ​we​ ​will​ ​make​ ​up​ ​a​ ​Primer Normalized​ ​Location​ ​format​ ​that​ ​includes​ ​the​ ​following​ ​information: ● Name​ ​(Latin-1​ ​compatible) ● Shape​ ​data​ ​(Binary) ● Latitude ● Longitude ● Country​ ​Code​ ​(ISO-3166) ● Administrative​ ​Level​ ​1 ● Administrative​ ​Level​ ​2 Not​ ​only​ ​should​ ​this​ ​data​ ​be​ ​persisted,​ ​but​ ​we​ ​will​ ​also​ ​search​ ​against​ ​this​ ​database​ ​as​ ​well, either​ ​in​ ​terms​ ​of​ ​a​ ​nearest​ ​neighbors​ ​search​ ​or​ ​full-text​ ​by​ ​name. Assignment Using​ ​the​ ​system​ ​as​ ​described​ ​above,​ ​design​ ​a​ ​pipeline​ ​to​ ​process,​ ​transform,​ ​and​ ​persist​ ​the cities​ ​file​ ​sourced​ ​in​ ​two​ ​particular​ ​ways: ● As​ ​is​ ​(Single​ ​file) ● As​ ​multiple​ ​files​ ​(e.g.​ ​Each​ ​line​ ​as​ ​an​ ​individual​ ​file,​ ​same​ ​format) Assume​ ​that​ ​the​ ​only​ ​transformation​ ​that​ ​you​ ​need​ ​to​ ​handle​ ​is​ ​the​ ​form​ ​given​ ​above. You​ ​should​ ​also​ ​write​ ​a​ ​PoC​ ​version​ ​showing​ ​the​ ​single-file​ ​scenario. The​ ​design​ ​should​ ​optimize​ ​for​ ​scalability,​ ​such​ ​that​ ​increasing​ ​the​ ​number​ ​of​ ​locations​ ​(e.g. using​ ​​all​ ​the​ ​GeoNames​ ​country​ ​data​)​ ​does​ ​not​ ​yield​ ​a​ ​linear​ ​increase​ ​in​ ​wall-clock​ ​processing time. The​ ​design​ ​must​ ​address​ ​the​ ​following: ● Resource​ ​requirements​ ​as​ ​the​ ​system​ ​scales ● Developer​ ​ease​ ​of​ ​use ● Any​ ​technology​ ​dependencies ● Any​ ​shortcomings​ ​or​ ​limitations​ ​of​ ​the​ ​system Optionally,​ ​address​ ​the​ ​following​ ​longer-term​ ​concerns: ● Reprocessing​ ​data,​ ​such​ ​as​ ​propagating​ ​a​ ​shape​ ​file​ ​format​ ​change ● Non-trivial​ ​increases​ ​in​ ​processing​ ​time​ ​for​ ​an​ ​individual​ ​city​ ​(i.e.​ ​new​ ​algorithms​ ​get introduced,​ ​additional​ ​fields​ ​are​ ​added) ● Monitoring​ ​and​ ​alerting ● Location​ ​data​ ​sourced​ ​from​ ​a​ ​database​ ​instead​ ​of​ ​individual​ ​files Include​ ​any​ ​assumptions​ ​about​ ​the​ ​application​ ​as​ ​needed​ ​for​ ​simplicity,​ ​although​ ​we​ ​are available​ ​to​ ​answer​ ​any​ ​question​ ​you​ ​may​ ​have​ ​about​ ​the​ ​system,​ ​assignment,​ ​or​ ​life​ ​in​ ​general. General​ ​Assessment​ ​Criteria Although​ ​we​ ​are​ ​primarily​ ​a​ ​Python​ ​company,​ ​any​ ​tools​ ​used​ ​do​ ​not​ ​have​ ​to​ ​be​ ​in​ ​Python,​ ​they only​ ​need​ ​to​ ​be​ ​delineated.​ ​Be​ ​sure​ ​to​ ​include​ ​the​ ​purpose​ ​for​ ​each​ ​tool​ ​as​ ​it's​ ​added. Make​ ​sure​ ​you​ ​hit​ ​all​ ​the​ ​requirements.​ ​​ ​Although​ ​some​ ​are​ ​coding,​ ​some​ ​can​ ​be​ ​strictly presentational.​ ​​ ​Some​ ​interesting​ ​and​ ​free​ ​tools​ ​for​ ​simple​ ​diagram​ ​drawing,​ ​if​ ​you​ ​don’t​ ​have one​ ​of​ ​your​ ​own,​ ​are​ ​Google​ ​Draw​ ​and​ ​yUML.me.
      Answer question

      Question 2

      onsite: You have a tree represented as parent, child tuples like this: [(39, 38), (80, 70), (39, 42), (80, 91), (37, 22), (37, 39), (42, 45), (48, 37), (91, 85), (48, 60), (60, 80), (60, 50)] Write a function that returns the root of that tree.
      Answer question

      Question 3

      onsite: # 1) Write a function that, given a binary tree, will produce the mode # of the tree. # # In the event of a tie, the item with the greatest value should be returned. # class BinaryNode(object): def __init__(self, data, left, right): self.data = data self.left = left self.right = right # 2) Convert the binary case above to an N-ary case.
      Answer question

      Question 4

      onsite: """ In this problem, you'll implement Conway’s Game of Life, a kind of simulation of the interactions between "living" organisms. The game begins with a pre-seeded board of "dead" and "live" cells ("Gen 0"), and the next generation of the board is determined by applying a set of transformation rules to the current generation. For each generation, apply the following set of rules to each cell to generate the next generation's board: - Any live cell with fewer than two live neighbors dies, as if caused by underpopulation. - Any live cell with two or three live neighbors lives on to the next generation. - Any live cell with more than three live neighbors dies, as if by overpopulation. - Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction. Here's an example seed, “Blinker”: Gen 0: Gen 1: Gen 2: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _| |_ _ _ _ _| |_ _ _ _ _| |_ _ O _ _| |_ _ _ _ _| |_ _ O _ _| |_ _ O _ _| |_ O O O _| |_ _ O _ _| |_ _ O _ _| |_ _ _ _ _| |_ _ O _ _| |_ _ _ _ _| |_ _ _ _ _| |_ _ _ _ _| Please implement the stub implementation provided below. """ class GameOfLife: def __init__(self, seed): pass def display(self): """Step 1: implement this stub""" pass def iterate(self): """Step 2: implement this stub""" pass blinker = [[False, False, False, False, False], [False, False, True, False, False], [False, False, True, False, False], [False, False, True, False, False], [False, False, False, False, False]] def run_blinker(): gol = GameOfLife(blinker) for i in range(5): gol.display() gol.iterate() def run_custom_example(): # Your additional test cases pass run_blinker() run_custom_example()
      Answer question

      Question 5

      phone screen: import json docid_to_title = json.loads('{"28099931907": {"content": {"title": "Zika dollars and Internet fight in play as government shutdown looms"}}, "28108959337": {"content": {"title": "Leaders express renewed optimism about flood relief as Congress aims to avoid a government shutdown"}}, "28110814722": {"content": {"title": "Senate passes stopgap spending bill, $1.1B to fight Zika"}}, "28101422554": {"content": {"title": "Senate blocks bill to avert shutdown as De..."}}, "28099132063": {"content": {"title": "Senate Dems threaten shutdown over Flint aid"}}, "28101167069": {"content": {"title": "Zika dollars, internet fight in play as government shutdown looms"}}, "28102817621": {"content": {"title": "House leaders reach deal on Flint aid, potentially averting shutdown"}}, "28108039075": {"content": {"title": "Deal reached to keep US government running, help Flint"}}, "28098698025": {"content": {"title": "Defeat of Republicans\\u2019 stop-gap spending bill brings federal government closer to a shutdown"}}, "28097027782": {"content": {"title": "Will Democrats force a government shutdown over Flint relief funds?"}}, "28111131355": {"content": {"title": "Lawmakers strike deal to avoid shutdown"}}, "28110856451": {"content": {"title": "Louisiana flood aid, $500 million, survives Senate budget fight"}}, "28106625838": {"content": {"title": "Pelosi aide says deal with Speaker Ryan covers Flint aid"}}, "28099931906": {"content": {"title": "Zika dollars and Internet fight in play as government shutdown looms"}}, "28096859458": {"content": {"title": "Are Democrats pushing the federal government toward a shutdown?"}}, "28110814723": {"content": {"title": "Senate passes stopgap spending bill, $1.1B to fight Zika"}}, "28093906031": {"content": {"title": "will democrats force a federal shutdown over Flint relief funds?"}}, "28108873175": {"content": {"title": "Senate Democrats accept deal on Flint aid, potentially averting shutdown", "sources": ["ABC", "FOX"]}}, "28103573587": {"content": {"title": "ALEXANDER : Senate Democrats\\u2019 Election Politics Are Putting Babies at Risk"}}, "28096849799": {"content": {"title": "Democrats poised to block stopgap funding bill over Flint"}}, "28098943696": {"content": {"title": "Senate blocks stopgap bill to prevent shutdown this weekend"}}, "28110942840": {"content": {"title": "Senate Passes Short-Term Government Funding Measure"}}, "28107038234": {"content": {"title": "House aides: Deal reached to help Flint, keep US gov\'t open"}}, "28084509076": {"content": {"title": "Week ahead: Spending fight shifts from Zika to Flint"}}, "28089633072": {"content": {"title": "Flint water aid spending bill\'s sticking point"}}, "28099749478": {"content": {"title": "Government shutdown looms due to partisan clash over Flint aid"}}, "28099468922": {"content": {"title": "Funding bill rejected as shutdown nears"}}, "28107540657": {"content": null}, "28098940419": {"content": {"title": ""}}, "28110838282": {"content": {"title": "Senate approves deal to keep government open, combat Zika"}}, "28093943889": {"content": {"title": "Democrats press talks as showdown vote looms on funding bill"}}, "28099506681": {"content": {"title": "Republicans ready new bid to avoid shutdown"}}, "28084188573": {"content": {"title": "Zika: Congressional showdown coming this week"}}, "28109130960": {"content": {"title": "McConnell: Let\\u2019s Keep Working Together to Pass Critical Resources"}}, "28097129455": {"content": {"title": "McConnell: We Cannot Afford to Wait Any Longer on Providing Critical Resources"}}, "28110653655": {"content": {"title": "Deal averts federal shutdown, ignores Cruz\' Internet \'giveaway\'"}}, "28110819318": {"content": {"title": "Senate passes spending bill after separate Flint aid deal"}}, "28106754872": {"content": {"title": "Democrats: Deal reached to help Flint, keep US gov\'t open"}}, "28093906030": {"content": {"title": "Will Democrats force a federal shutdown over Flint relief funds?"}}, "28108257314": {"content": {"title": "US Senate Again Blocks Bill That Includes Zika Funding"}}, "28097690131": {"content": {"title": "Cornyn: Democrats Pushing Country Towards Shutdown for Political Gain"}},...) # 1. Write a function that identifies all the unique words across all the `content.title` fields in `docid_to_title`. # 2. Write a function that computes the k most frequent bigrams across all the `content.title` fields in `docid_to_title`. # 3. Find all the duplicate titles in `content.title` fields in `docid_to_title`.
      Answer question
      6

      Top companies for "Compensation and Benefits" near you

      avatar
      Loom
      4.1★Compensation and benefits
      avatar
      Truelogic Software Solutions
      3.8★Compensation and benefits