Looking for a Node developer
E-xact Transactions, Telemetry’s parent company, is looking for a couple Node.js developers:
You must be familiar with test driven development You must be familiar with asynchronous programming You should have experience with databases such as MySQL, MongoDB and the like
I know what you’re thinking. Financial software. What could possibly be more boring?
Well, you’d be surprised. We’re working on a bleeding-edge service-oriented architecture that has all the challenges of a large distributed system, and all the challenges that go alongside financial transactions, from the need for strict privacy to encryption requirements you wouldn’t believe. The code we write directly affects the lives of millions of people, with billions of transactions going through it every year.
The people who work on the project are smart. Management keeps a hands-off approach, and lets the engineers do their job. We have a great QA team that tries hard to break the code, so that developers can focus on making sure that it works. Fingers are never pointed. Solutions are adopted on their merits.
Interested? We want to hear from you
If this sounds like the kind of nut you’d like to crack, drop me a note, alongside some information about you—a CV will do, but so will a link to your LinkedIn page, or even just a few words on who you are and what you do.
I will also ask you to consider this problem and send me your solution:
Suppose you have a database that contains an unspecified number of records—likely in the millions or billions of rows. The nature of the database is irrelevant, but you can assume that it can perform regular CRUD operations, indexing, and search on individual indices. The database itself cannot be considered secure.
The contents of each database row are encrypted using a key that is available to you in a secure storage area separate from the database. The encryption is such that encoding the same data twice will not yield the same results. The secure storage area can be used to save any other information you may deem necessary, but it is not backed by an efficient storage mechanism (meaning that it should be used to store as little as possible).
You are free to add one or more columns that are unencrypted, provided that they cannot be used under any circumstance by a third party who doesn’t have access to the secure storage area to decrypt or infer the contents of the encrypted data.
One of the fields in each row is a credit card number; while the number cannot be stored in plain text, it must be possible to search for it, returning all the rows that match.
How would you find out how to implement this search in the most efficient way possible?
A few important notes:
- This is a simplified (yes, simplified) version of the kinds of problems we deal with every day.
- We don’t need to see any code. We’re interested in your thought processes, particularly when faced with a new problem. We can get to coding questions if we decide to interview you. Explain your solution, and the challenges/tradeoffs you feel are necessary in plain English.
- Please remember that this is not a school exam. You’re not locked in a room, and we’re not going to confiscate your Internet connection.
That’s it. If you apply for the job, I promise I will reply to you regardless of whether we decide to move forward and interview you, though it might take me a few days. We’ll invite the candidates we like to a round of interviews, either in person or through videoconferencing, as appropriate.
E-xact is based in Vancouver, BC, Canada. ↩