Interview Embedded Software Questions

Take him out to his car, and start taking it apart until you get to the computer controlling things. Point to it and say "we're doing that" then go back inside.

Reply to
DJ Delorie
Loading thread data ...

Ask him what trade-offs are involved with choosing the right ICs, passive components, etc for a given project. He should have a grasp on trade-offs between the these: features/speed, current requirements, time-to-market, cost/supply channels, experience at your company.

Give him a scenerio and ask which MCU he might use and why. The best engineers will do more that just a simple and obvious comparison, but they'll talk about toolsets and existing experience at a company. The "best choice" in an absolute sense may not be the best if your company lacks experience with that type of device and this is a small project.

Is HE willing to learn about the devices YOU use, assuming he hasn't got any "hands on' with those particular devices?

And are YOU willing to learn from HIM in the areas of expertise he has that may be different than your own? Remember, an interview is a two-way street :-)

Reply to
Eric

How much are you prepared to pay? I have colleagues with 30 years experience from embedded design through database-driven websites (and connecting them together). They report pay rates have fallen because managers are scared to hire people aged 50+. Do you want good or cheap? I know everyone wants both, but ...

Stephen Where? When? required experience?

--
Stephen Pelc, stephenXXX@mpeforth.com
MicroProcessor Engineering Ltd - More Real, Less Time
 Click to see the full signature
Reply to
Stephen Pelc

Because our lame debugger will always say "Local Not Alive" :-)

-- Darin Johnson

Reply to
Darin Johnson

No, don't go back inside. Put the car back together, otherwise the consultant can't leave.

-- Darin Johnson

Reply to
Darin Johnson

Is "your tools are broke" an acceptable answer?

Reply to
Jim Stewart

s/give/given/

[...]

I agree some are making that assumption but I chose my words carefully. "If there is any kind of optimization taking place ..." isn't the same thing as deliberate selection of optimizer options.

Good C compilers are not simply elaborate collections of macros driving an assembler altho the historical Pascal faction would have one believe such.

Reply to
David Kelly

One of my guesses would be that the stack was getting clobbered. Doesn't even have to be broken interrupt handlers. Just put a buffer on the stack, save a pointer to it somewhere, then leave the function. Next time something tries to write to that buffer it will corrupt the currently running stack. If done in a different context it will be very mysterious.

A habit a lot of programmers have is in assuming the rest of the system is working. In embedded systems you can't necessarily trust that the hardware and OS are working correctly (and sometimes not even the compiler as I've discovered). A candidate that says "that can't happen, z must equal 3" is inadvertently limiting the scope of the problem solving.

Granted, in an interview one usually expects that such questions can be solved without going outside the box, especially if the question is asked as if it were a puzzle. I think candidates might open up more if the question were asked as "I once had something like this fail for me, can you give me ideas on what may have caused this impossible result?"

-- Darin Johnson

Reply to
Darin Johnson

If the code was not compiled for debugging, how could one put the breakpoint between two source lines in a high level language ?

While debuggers relying solely on disassembled machine instructions work without any compiler/assembler assistance, any HLL debugging requires cooperation from the compiler, either as some line number information to be associated with the source code or putting the actual source code as "comments" into the object file.

Paul

Reply to
Paul Keinanen

The debugger that I am most experienced with will do this, even if the line is not there. It will put the break on the next most machine instruction which may never be reached in the required path, or (worse?) may be reached from paths unassociated with the one under test because that code line has been optimised into that path.

As you say, debugging optimised code using a source level debugger is difficult, but it is not fundamentally impossible.

tim

Reply to
tim(yet another new home)

As Tom also pointed out, in most cases it is possible to compile with optimisations enabled and still allow debugging.

Regardless, who said I wasn't using an ICE?

Regards,

--
Mark McDougall, Engineer
Virtual Logic Pty Ltd, 
 Click to see the full signature
Reply to
Mark McDougall

I have a particular device that's got a 4 stage pipeline, and the result of an operation won't necessarily be available at the next machine cycle. That's also an issue with MIPS cores for branches - the assembler has constructs to insert no-ops but occasionally they get turned off for various reasons. (The instruction _after_ the branch instruction is actually picked up and executed during the branch itself which can be really useful but can also cause great pain and grief).

I've seen the most amusing bugs because the assembler directive to turn them on again was 'forgotten'.

When I get this sort of question I ask if the assembler listing is available.

Cheers

PeteS

Reply to
PeteS

Turns out that was exactly what is was but with more than one agency. They didn't bother to contact the candidate and then told us with a straight-face that the candidate was ill or just didn't fancy it. Over the last week I've had those same candidates turning up unannounced looking for interviews at whatever arbitrary time the agencies have told them.

It's disgusting considering the sums these agencies are asking.

Reply to
Tom Lucas

"Tom Lucas" wrote in message news: snipped-for-privacy@iris.uk.clara.net...

A few years back an agency asked me to attend an interview for a contract in Bristol, which went well. On the drive home I received a call from another agency asking me to attend an interview in Reading, which I declined. I later discovered that this second agency was also bidding for the first job, and after phoning me had told the Bristol client that I wasn't available as I'd accepted a job elsewhere, which was of course a total lie.

I complained. I also looked into it, and discussed this with other agencies. The general consensus was "it happens all the time".

Some of the recruiters are very good, and some are lying scumbags.

Steve

formatting link

Reply to
Steve at fivetrees

Any suggestions as to those which are very good? I've got several lying scumbags I can trade ;-)

Reply to
Tom Lucas

"Tom Lucas" wrote in message news: snipped-for-privacy@despina.uk.clara.net...

My data would be out of date, and related to specific individuals. I didn't get the impression that "lying scumbaggery" was a corporate policy [1], merely a tool employed by certain individuals to achieve their targets/bonuses.

[1] At least not overtly...

Steve

formatting link

Reply to
Steve at fivetrees

... snip ...

Which is handled concisely by the (elsethread) suggestion:

a = !a;

Other possibilities include using the C99 declaration

#include

bool a;

or using Pascal

a : boolean;

--
Chuck F (cbfalconer at maineline dot net)
   Available for consulting/temporary embedded and systems.
Reply to
CBFalconer

VAR flag: Boolean;

flag = not flag;

or did you have to write in C ;-)

--
Best Regards,
Ulf Samuelsson
 Click to see the full signature
Reply to
Ulf Samuelsson

Of course not.

and equally valid answers to the question are

TX BIT P0.4 CPL TX

or

PIN = Flag; Flag.d = !Flag; /* toggles on every CLK */

-jg

Reply to
Jim Granville

:= :-)

--
Chuck F (cbfalconer at maineline dot net)
   Available for consulting/temporary embedded and systems.
Reply to
CBFalconer

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.