Semmle has four steps in the interview process: initial phone screen, a one-hour remote technical screening, a three-hour onsite technical screening, and a conversation with one of the C-levels.
The first phone screen went fine, and I was given an appointment for the second remote interview rather quickly afterwards.
For the second remote technical screening I was told that I wouldn't have to prepare anything, but that the tasks would be highly technical.
The interview itself was quite challenging, and contained two questions, a hard technical question, and a second graph-theoretical question.
I then got a rejection letter a few days later, citing that I was too unsure and too fast at "giving up" on questions.
My problem with the interview is a combination of two things.
It will often be difficult to do a great performance in a one-hour interview with difficult and vaguely defined problem premises, performed over a video link with spotty audio connections.
However, I think the worse problem is the notion of expecting candidates to be able to immediately say smart and technical things about subjects that they might haven't worked with for several years.
In example, had I known that I should probably refresh my knowledge about graph theory before the interview, I would have definitely fared a lot better, instead of struggling to recall details I hadn't though about for years.
I will absolutely admit that I'm angry with the situation Semmle right now, but I feel I was rejected based on unreasonable grounds that could have been avoided by a less stressful situation, or at least a willingness to let potential candidates prepare for the interview.