I have been on both the interviewer and interviewee side of those "puzzle" questions.
As an interviewer, the first thing I do is compare the resume to what we need to fill the position.
Then, assuming there is a reasonable overlap, I will focus on the specific position-relevant experiences described in the resume.
For those experiences, I will quiz them on the application requirements and some of the specifics of their participation in the coding, testing, and documentation. This is a kind of "audit". There should be all kinds of "evidence" that someone really did participate in a development as they are describing.
In some cases, the interviewee will enthusiastically described parts of the process in such detail that there will be no doubt. In other cases, I need to keep up the search. I will attempt to focus of some of the things they were likely to have run into during their efforts - perhaps a HW interface, a communications protocol, data structures, resource arbitration, etc. And this commonly results in whiteboard use.
So all of that said, there have been times when I have formally "tested" applicants - although in all such cases, the tests were intended to be very rudimentary. In one case, the State Employment service decided that it was better to send us Veterans then programmers. So I created a programming test that was super-simple, specific to the type of coding they we would be expecting, and could be completed is minutes. When a candidate arrived, they were provided a desk with ample reference material (this was pre-internet), paper, pen, the instructions in writing, as much time as they wanted, solitude, and access to me should there be a problem. They were also told that bugs were fine. "Actual programmers" would complete the assignment in a few minutes and would move on to the interview process. The others would excuse themselves - sometimes after spending over an hour at the desk.
In another case, I was teaching a 1-week course for Fortran programmers that introduced them to everything they needed to know to develop their specialized code on the companies CAD/CAM system. Being a Fortran programmer was a prerequisite, so the test was given at the start of the course. Most of the "students" were actually managers - but this was fine. At the start of the course I alerted the marketing department to what I had in the way of non-programming students and those students were given the option of being taken out to dinner each day. I remember one guy who took this as being "caught". He said he was a Cobol coder. I told him that he could take the test in Cobol. When that didn't work for him, I told him to simply draw a flowchart. Needless to say, he ended up with our Marketing people.
In that test, I provided a function that when provided two line segments (Xa,Ya to Xb,Yb) and (Xc,Yc to Xd, Yd) would return the number of times that the line segments intersect (0 or 1). They were provided two triangles (Xe,Ye; Xf,Yf; Xg,Yg) and (Xh,Yh; Xi,Yi; Xj,Yj), and asked to write a function that would return the total number of times those triangles intersected - presumably using the function provided. I tested this test of several coworkers and decided I should allow 30 minutes. Ultimately, I allowed an hour.