Freebase needs YOU in its quest to build a database of the world's public knowledge. We are developing highly scalable methods for creating, loading, and reconciling large data sets. We're looking for someone that lives and breathes distributed processing.
You will be:
- Developing and evolving a declarative query language on a distributed compute cluster
- Write large-scale data manipulation operators
- Creating directed search crawler operations for structure extraction from the web
We are looking for talented and energetic software engineers with experience in:
- Database or OLAP engine internals, or analytical business applications
- Distributed computing
- Language design, interpreters or compilers
- Map/Reduce algorithms
We will give you:
- Hard problems that require you to learn quickly and take ownership
- A chance to work with world-class people to change the world
- Freedom to do things the right way
If you choose to accept this mission, please:
- Submit a cover letter and resume in plain text, HTML, or PDF to jobs@metaweb.com.
- Distinguish yourself from others by responding in writing to the following questions:
- What is your favorite programming language? Why?
- What's most broken with SQL as an API of database access? How would you fix or replace it? What would a representation of your personal music collection information in your new, improved design allow you to do that you couldn't easily do with a standard relational database?
- Imagine a graph that consists of directional links between nodes identified by small non-negative integers < 2**16. We define a "cycle" in the graph as a nonempty set of links that connect a node to itself. Imagine an application that allows insertion of links, but wants to prevent insertion of links that close cycles in the graph. For example, starting from an empty graph, inserting links 1
2 and 2
3 would succeed; but inserting a third link 3
1 would fail, since it would close the cycle 1
2
3
1. However, inserting a link 1
3 instead would succeed. In your favorite programming language, declare data structures to represent your graph, and provide code to populate your data structures with a starting graph and to perform an "insert link" function that fails if a new link would close a cycle. What is the time and space complexity of your solution? Hint: a good solution performs an insert much more efficiently than in O(e) time, where e is the number of edges in the graph.
Metaweb is an Equal Opportunity Employer and does not unlawfully discriminate on the basis of any status or condition protected by applicable federal or state law.
- Principals only. Recruiters, please don't contact us about this job.
- Please, no phone calls about this job.
- Please do not contact us about other services, products or commercial interests.
- Reposting this message elsewhere is OK.
