There was one question about BGP that I didn't answer fully. The guy asked me about how it's handled internally to an autonomous system. I said that iBGP is used, and tried to remember the specific types of peering that are done. (I have read about iBGP, but when I worked with BGP, all of the peers were external, so I spent much more time on eBGP than iBGP.) Since I was not sure about the specifics, I just left it at that.
Another question had to do with data alignment in C programs. The question was how large a structure with four fields: an int, a char, another char, and a pointer is. Wisely, I asked how large an int is on this platform, but the first answer I gave (128 bits) was not correct. (I did not remember that alignment rounds up to the nearest multiple of the word size, so I gave a "safe" answer, because it was the nearest power of two. The sum of sizes for each member is 80 bits, and the correct answer is 96 bits, using an assumption of a word size of 32 bits, and rounding up to the nearest multiple.)
There was also a question of how to find a loop in a linked list. There is a clever way to do this, but I didn't remember what it was, so I gave a naive algorithm of just keeping track of addresses encountered on the list.
Anyway ... this isn't working for me. I get hung up on the same type of question; the type where if I was just working on something, I'd check references for clarity or to refresh my memory. The interviews are making it look like I don't have enough experience to do jobs that I have done, and are not allowing me to demonstrate the abilities I have to get things done. I thought pointing people to open-source projects I've contributed to would help somewhat, in that they'd at least see examples of things I'd done that others thought were useful. Perhaps the projects aren't high-profile enough, or more participation on my part is needed. I also thought that even if I didn't get considered for a full-time position, I could at least get some part-time or contract positions that would focus on the things that I actually did well on in the interviews, but that hasn't happened either.
I get the feeling that a lot of the jobs I apply for are typically done by people who have spent a lot of time on a few things, whereas most of the jobs I've had required me to wear a lot of hats. Since I was being paid to do what was asked of me, I didn't have the option of spending time on things that might have (in retrospect) made me more attractive today. Also, it isn't clear how I would have been able to predict what kinds of things I needed to make sure I knew for the future.
And the one time I did spend most of my time on one thing (implementing an e-commerce server in Java), the project ran into problems. I became concerned that I was falling behind in my other areas of expertise.
It has occurred to me that I might have to just work on one project with a particular focus and try to make something out of it. There is always the risk that if it turns out to be the "wrong thing", for whatever reasons, I might have to start from scratch, and keep going until (hopefully) something sticks – either I can make money off of it, or the experience is sufficient for someone to want to hire me. Also, some people are very critical of those who haven't become successful (yet); as they are compared to the most successful of startups. I have read about people who've made many failed attempts at starting companies. Some give up (and are hopefully hired to do something anyway), while others keep going until they hit on something that makes money.