The interview process contains an initial meeting with two software developers and engineers to discuss your background and why you think fit into this job, which went pretty smoothly for me.
After that, they invited me for a 4 hours code challenge by using C++. It was not difficult and I submitted my answers before 4 hours deadline.
After this code challenge section, they wanted me to work with two team members in a day for 5 to 6 hours which they initially said they would pay me at my current rate. It seemed that it went pretty smooth. We spent 2 hours to work further on the code challenge and address some of their questions or implement or modify some of the features. After an hour break, we backed to talk about different projects that they have in terms of open-source codes and also asked me to show them some of my projects which again went pretty smoothly and at least they said that it was really good at that moment.
Their CEO supposed to get into that meeting at some point to introduce himself and have a meeting with me, which he never showed up.
I got an email later on that they cannot offer me this job because after talking to their CEO they realized that my background is not a good fit based on their job description.
I'm not saying why they think I'm not a good fit (I didn't want to accept their offer anyway even if they offered me), the only complaint I have is that why they didn't talk about my background and skill with their CEO before moving forward into next steps? If somebody is not a good match, it's obvious from the beginning or at least after submitting the code challenge. Not spending a day to work with them and even saying you seem pretty good and then get a rejection.
Also, they promised to pay for my hours that I spent working with them at the final interview step, but they never said anything about paying me back.