Abbott Flashcards

Prepare for software engineering job interviews at Abbott.

1
Q

Modern .NET U/I framework.

A

WPF (Windows Presentation Foundation)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

.NET remote procedure calling framework.

A

WCF (Windows Communication Foundation)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Low level exception debugging for non-debug builds (for .NET or any Windows environment)

A

Watson Buckets. Tie approximate location of the exception to the source code using PDB files created during compilation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Calling unmanaged C++ code from C#

A

Interop, arguments and return values must be marshaled

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

1st most recent .NET experience

A

Created alternatives to the .NET provided serial port endpoint class to work around problems with the Silicon Labs virtual com port driver. Built test code to exercise these endpoints.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

2nd most recent .NET experience

A

Debugged multithreaded serial communication code in PLEX-ID that was causing device response to appear to be delayed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

3rd most recent .NET experience

A

Created LIS interface for PLEX-ID. An optional service interfaced with the PLEX-ID backend and, using a legacy ASTM 1394 LIMS library, communicated results via a serial port or network socket. The legacy library was accessed via a new managed interface that took that bottlenecked the library’s old, wide, interface through a new XML based one that I introduced.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

4th most recent .NET experience

A

Added audio alerts to the m2000 instrument. This included creating a user interface for configuration of the alerts.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

NGE Development Activities

A

I developed firmware for stepper motor/pump, valve, heater block control and cable sensing. I also developed the process scheduler and inter-module communications.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

NGE

A

The NGE firmware project was with Jim Keevan, Julius Toth, Floyd McInally and Tyler Hall, a contractor associated with the principle electrical engineer, Ron Kukula.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

NGE Processors Modules

A

The project was designed around several ARM-based processors and an AVR processor for heater block control.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

NGE Development Environment

A

GNU tool chains for ARM and AVR processors using the Eclipse IDE.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

PLEX-ID

A

The PLEX-ID desalter project was initially designed and coded by a prototyping house, Omnica, for Ibis. When Abbott bought Ibis, responsibility for the desalted firmware was taken in house by me.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

PLEX-ID Development Activities

A

In addition to maintenance, documentation, bug fixing and the creation of a controlled build environment, new features where added.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

PLEX-ID Processor Modules

A

The desalter was designed around 32 (11 distinct) 8051 based modules. 30 of these modules reside on a CAN-bus to coordinate the actions preformed by each module. The desalting assay is pipelined via a carousel of 22 spin mixer modules to bring the throughput to a well processed every 30 seconds.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

PLEX-ID Development Environment

A

Development was through the Kiel 8051 tool chain using the Silicon Labs IDE.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Tell me about yourself

A

I’m a software engineer of more than 20 years. As the field is constantly changing, I’ve have found it to fit well with my life-long love of learning. I’m eager to learn and use new technologies.

18
Q

Why should we hire you?

A

I’m an excellent programmer, competent with both C++ and C# with a broad range of talents. I’m equally at home analyzing and debugging others work as I am designing and coding my own. The last 5 years I have been involved with embedded software development. Prior to that I worked on large medical diagnostic applications. I enjoy learning new technologies and bringing a fresh perspective to their use.

19
Q

Why do you want to work here?

A

I’m motivated by the opportunity to create something important and beneficial to others. This gives my effort meaning beyond a pay check and drives me to do good work.

20
Q

What is your greatest weakness?

A

I can sometimes be too frugal. I have tried to address this by being more introspective and critical of my choices and their rationale. An instance of this occurred when I was debugging infrequent randomly dropped characters in the serial connection between the SCC and the PLEX-ID. It was not certain where the responsibility for the dropped characters lied. The virtual serial port USB connection to the desalter was suspect, but that was difficult to prove. I started with frugal approach to avoid an expensive USB sniffer, but soon realized that being able to quickly eliminate half of the search for the bug would be more valuable than the cost of the sniffer.

21
Q

What is your greatest strength?

A

I’m persistent and thorough in tackling difficult problems. An instance of this recently is finding the cause of an intermittent error closing and reopening a virtual com port. Lacking a readily reproducible way to cause the problem, I set up a test bed using spare SCC, Desalter boards and other parts around the lab. This allowed long running test code to eventually trigger the problem while I worked on other tasks. Different potential solutions could be tested. After trying a number of different host serial port end point implementations, the problem was shown to be an issue internal to Windows XP that has since been remedied in Windows 7.

22
Q

Lazy/RT pattern

A

A design pattern conceived by Ian Poole and me to form the principal architecture behind the Quips genetic image analysis software. The pattern manages a representation of multiple application states in an computationally efficient manner. The pattern works hand-in-hand with the classic Visitor pattern.

23
Q

Visitor Pattern

A

A classic, Gang of Four, pattern that decouples structures from the operations on them using type safe double dispatch.

23
Q

Double dispatch

A

A method for virtual binding based on two run time types, the visitor and the visitee,

24
Q

PID

A

Proportional Integral Derivative controller is a feedback loop algorithm were the controller endeavors to minimize the error between a measured value and a set point for the value. Proportional term embodies the current error, the Integral term past error and the Derivative term a prediction of future error.

26
Q

[SOAR] NGE Heater Block Control

A

NGE, the same architectural layer was compiled for both ARM and AVR modules. While platform differences where isolated, the AVR simply did not have the memory and horsepower to run the same support code as the ARM. This resulted in occasional AVR crashes. To subvert a long debugging processes, I instead developed a simple protocol between the ARM and AVR and off loaded the PID algorithm onto the ARM. This fixed the reliability problem on the AVR.

27
Q

[SOAR] NGE fill-in

A

The NGE project was staffed with little redundancy. During development, the developer responsible for motor control left due to an extended illness. I was able to school myself on the motor controller and associated code, and reprioritize tasks to complete critical functionality for the prototype.

28
Q

[SOAR] PLEX-ID desalter firmware spec gap

A

A gap analysis in an internal quality audit of PLEX-ID revealed a lack of software specifications for desalter firmware developed by the prototyping house. Working in a small group, specifications were reverse engineered and via trace matrix were shown to be complete to the auditor.

29
Q

[SOAR] PLEX-ID dropped serial characters

A

I traced the random, infrequent loss of characters on the serial connection between the SCC and the desalter to multiple causes including an undocumented pipelining bug in the 8051 processors that caused intendedly short periods with interrupts disabled to become lengthy resulting in overflowing the one character serial port hardware buffer on the 8051. A second cause was an improper understanding by the original developers of 8051 interrupt priorities. Both these issues were addressed and the communication link was shown to be reliable with white box testing.

30
Q

[SOAR] Quips design

A

The desire to have a new genetic image analysis program suite run on both Macintosh and PC lead me to invent a novel design pattern that was implemented in C++. 85% of the code was shared on both platforms with each platform retaining its native look and feel.

31
Q

[SOAR] Handling conflicts with colleagues

A

The principle developer on the NGE firmware project, a contractor, had the annoying habit of restyling other’s code including mine. After repeated discussion failed to stop the behavior, we imposed project wide coding standards that addressed all party’s concerns.

32
Q

[SOAR] Sequence diagram creation

A

Design documents for the PLEX-ID where ladened with hand drawn sequence diagrams in Visio. Not only were these diagrams inconsistent, but they where also cumbersome to edit. I took the initiative to find a tool that draws such diagrams from textual descriptions. In the team wiki, I described the procedure for creating the diagrams and retaining the associated textual descriptions which was then embraced by all the developers.

33
Q

[SOAR] Symbiotic colleague relationship

A

When I was new to embedded programming I teamed with a fellow electrical engineer that was new to software engineering and coding. We complimented each other’s weaknesses and where able to bootstrap each others’ abilities.

34
Q

[SOAR] Controlled development environment

A

To save effort and to guarantee consistency, I created a single multipurpose VM that served both as a continuous integration build server and a development environment for programmers.

35
Q

[SOAR] Hardware project

A

Spin mixer modules on PLEX-ID were too small to accommodate a JTAG header. Since a bug in the zerorec image randomly booted the bootloader on power up instead of the application, it was necessary to devise a JTAG connection to the unpopulated contacts on the board. I conceived and built a gadget using parts and materials in the engineering lab. This gadget clamped on to the board and provided a connector for the USB JTAG dongle. It was then possible to update the zerorec image while debugging the issue.

36
Q

[SOAR] Novel solutions

A

A fix for the zerorec bug was only useful for newly manufactured boards. It was not feasible for FSEs to update zerorecs on the 32 PLEX-ID boards since individual physical access would be required to each, one at a time. I additionally implemented a clever work around in the bootloader that could be deployed in the field via the normal firmware download procedure which hid the problem on older zerorecs.

37
Q

[SOAR] Reverse engineering

A

A gap analysis found the PLEX-ID firmware lacked an adequate high level design document. By studying the code, I was able to devise a set of design principles and patterns used in the firmware development. I created a document rich in high level explanation and diagrams, avoiding simply restating the code as is common in such documents.

38
Q

[SOAR] Complex debugging

A

A PLEX-ID was installed that would intermittently report bar codes with lower case. I traced the problem to a unique firmware version on the barcode scanner. Desalter firmware was reworked to be robust to these scanner firmware versions. Additionally, action was taken with the manufacturer to control the firmware version provided with the scanners.

39
Q

[SOAR] Dual sprayer mod

A

The PLEX-ID dual sprayer module was modified to include valve and sensors to control vacuum during the cleaning cycle. I implemented support for this new functionality in firmware, and purposes a hardware modification enabling the firmware to sense the presence of the new device to avoid bifurcating the firmware into separate versions.

40
Q

Most recent Microsoft development environment used

A

Visual Studio 2010 and .NET 4