Company background
The British Broadcasting Corporation (BBC) has been established by a Royal Charter in 1927 (at least with the current name, originally founded in 1922). It is a public service broadcaster, funded by the television licence fee paid by UK households, and it is the world’s oldest national broadcaster. Their stated mission is to
- inform
- support learning
- to highlight success stories in the UK
- to reflect the UK, its culture and values to the world
The BBC has a commercial arm, BBC Studios, which produces and distributes content both domestically and internationally, and generates revenue through advertising, sponsorships, and the sale of content and services. The BBC uses its income to deliver distinctive content to serve all audiences across the following services:
- Ten UK-wide radio networks.
- Two national radio services in Northern Ireland, Scotland and Wales,
- 39 local radio stations across England and the Channel Islands.
- iPlayer,
- BBC Sounds,
- apps for News,
- Sport,
- Weather,
- Children’s online services,
- digital archive.
Answers to possible questions
What do your friends and family know you for?
I think most people around me consider me a pretty chill and laid-back person, if not a bit unhinged at times, once I get to know the other person well enough. I’m a fan of computers and technology in general, and whenever I see something that piques my interest, the first question that comes to my mind is “how does it work?”.
What activities would you plan in an ideal day?
Well, in the past I would have said “spending the afternoon playing Dota 2 with my friends”. We had quite an active group, and at some point we were able to play in two teams of 5 against each other, which was a lot of fun. Nowadays, with the fact that I live alone here, I tend to spend my free time doing little mondaine activities like groceries or just going out for a walk. I find them quite relaxing. And obviously, if my friends are available, I love to spend time with them, especially if there is some interesting activity held in the city, like a food festival or something like that.
What do you truly enjoy doing, and what are you like at your best?
I really enjoy learning new things, especially if they are related to computers and technology. Once I get an idea, I love to dive deep into it, trying to make it mine via the creation of something that shows me that I have not only memorized the concept, but internalized it. I love videogames, even though I don’t have nearly as much time for them as I used to.
What achievements are you most proud of, and how did you get there?
Most of them are related to programming, which, I guess, is also the reason why I am applying for this position. I started with an Android application made in MIT App Inventor, that changed my life forever. Then I studies Java applied to Android development on my own. Until a couple of years ago, I had some of the apps I made still available on the Play Store. To this day, I have no idea on how I managed to make them functional. Now there are a cople of projects I am still quite attached to:
- rules_doxygen, a very focused tool to generate Doxygen documentation withing a Bazel project, which is a build system from Google that I have been using for a while now and to which I have developed a complicated love-hate relationship. It started out as something I needed for my projects, but now I have received some contributions from other people, and I am quite proud of it, as it appears to be quite useful;
- the IAC VPN, which is a collection of Terraform and Ansible scripts to set up a VPN server on a cloud provider of choice on the fly, and it is something I use personally from time to time;
- lucid is a recent one, a tool written mainly in C++ with some strong Python bindings, to formally verify stochastic cyberphysical systems via sampling-based techniques;
- a gpu based Linear System Solver in OpenCL;
- a telegram bot for spotted, which is still used quite heavily in my old university. Last time I checked, the channel it runs had almost 1600 subscribers;
- 3D svg rendering, started for Rubik’s cube, but then extended to be a more general tool to render 3D animations in svg format;
- a fork of CVC5, a state-of-the-art SMT solver, to add some features that I needed for my research.
What activities do you not enjoy, and why do you think that is?
I tend to get bored quite easily if the activity is repetitive and doesn’t require much thinking. Rather, I will immediately start looking for a way to automate it.
Preliminary interview
Questions
What skills would you like to develop in this role?
What is a work environment that you thrive in?
What is the a work you are proud of?
How do you deal with challenges that arise in your work?
What is the last relevant project you have worked on?
How do you handle working with other people in a team?
Technical interview
Background: How do general elections work in the UK?
There are 250 constituencies in the UK. Each constituency varies in geographical size, but they are all made up by roughly the same number of voters, between 60,000 and 80,000.
On election day, voters in each constituency can cast their vote for their favourite candidate. Candidates are usually members of political parties, but they can also be independent.
The candidate who receives the most votes wins and becomes a member of parliament (MP). This election system is called a “first past the post”.
Informally speaking, constituencies can be divided into two groups:
- safe seats: constituencies where a party has a strong support base and is likely to win again in the next election.
- marginal seats: constituencies where the support for parties is more evenly distributed, and the outcome of the election is uncertain.
Despite 650 being elected, the UK parliament only has space for about 430 MPs.
Usually, the party with the most MPs in parliament forms the government, and its leader becomes the prime minister.
Task
Domain
The domain for the election represents some key concepts:
- constituencyId a unique integer id to identify a location. E.g “Brent Central” is 90
- party is a short 3, or 4, letter code for a party for instance LAB = Labour, CON = Conservative etc.
- votes the number of votes gained by a party in a constituency
- share the % share of the total votes the party received
API
The API has 3 endpoints:
- GET
/result/{id}to get an elections result for a given id. - POST
/resultto add a new result - GET
/scoreboardto get the running totals. This is unimplemented.
Loading diagram...
Data structure
type PartyResult = {
party: string;
votes: number;
share: number;
};
type ConstituencyResult = {
id: number;
name: string;
seqNo: number;
partyResults: PartyResult[];
};
Example data for a constituency result:
{
"id": 15,
"name": "Antrim South",
"seqNo": 643,
"partyResults": [
{
"party": "DUP",
"votes": 14507,
"share": 38.2
},
{
"party": "UUP",
"votes": 11059,
"share": 29.1
},
{
"party": "SDLP",
"votes": 4706,
"share": 12.4
},
{
"party": "SF",
"votes": 4407,
"share": 11.6
},
{
"party": "AP",
"votes": 3278,
"share": 8.6
},
{
"party": "OTH",
"votes": 0,
"share": 0.0
}
]
}
Architecture
Topic News

IAC-AD
Loading diagram...
Loading diagram...
Dotingestion 2
Loading diagram...
Questions
How do you create relationships in the work environment?
What is your opinion on inclusion and diversity in the workplace?
Tell us a time when you used an innovative approach to solve a problem.
3d SVG animation!!
How do you deal with a situation where you have to work with a difficult colleague?
How do you organize your work and manage your time?