What book should I study before a new job.

Discussion in 'C++' started by opistobranchia, Aug 14, 2005.

  1. I know this gets asked all the time but.....
    I am a fresh grad. I have taken a year of java and 1/2 year of C++ and
    OO Design and Analysis. I have strong Java skills and I have done
    projects in c++. But I am pretty sure that I am getting this job as a
    java/C++ software engineer. I want to put out a good impression since
    it is with a real good company and a great opportunity for me with
    real smart people. What book do you rec. that I study before?

    I am currently reading C++ Gotchas: Avoiding Common Problems in Coding
    and Design.

    Thanks, looking forward to your replies.
    opistobranchia, Aug 14, 2005
    #1
    1. Advertising

  2. opistobranchia

    benben Guest

    Congret for your job you found! Which company is that if you don't mind
    telling us?

    For coding and design, I surely learnt a lot from Code Complete 2nd Ed.

    For avoiding writing Java in the (More) Effective C++/STL are very helpful
    (any a joy to read).

    For a lot of random (but valuable) articles get a load of C++ Users Journals
    (prolly can be found in local library...).
    benben, Aug 14, 2005
    #2
    1. Advertising

  3. opistobranchia wrote:
    > I know this gets asked all the time but.....
    > I am a fresh grad. I have taken a year of java and 1/2 year of C++ and
    > OO Design and Analysis. I have strong Java skills and I have done
    > projects in c++. But I am pretty sure that I am getting this job as a
    > java/C++ software engineer. I want to put out a good impression since
    > it is with a real good company and a great opportunity for me with
    > real smart people. What book do you rec. that I study before?
    >
    > I am currently reading C++ Gotchas: Avoiding Common Problems in Coding
    > and Design.


    When I interview, I look for a solid basic understanding of sofware
    development in these areas.

    1. Basic computer science
    2. Experience with collaboration tools (CVS, subversion)
    3. Build experience (make, ant etc)
    4. Knowledge of some standard libraries and tools
    5. Evidence of "passion" for software development

    As for basic computer science, there are a number of very basic things
    that very unfortunately, many programmers just don't know.

    e.g.
    a)
    int * p;

    what is (p+1) ?

    b) ( !a && !b ) == !( a || b )

    c) System design issues - reference counted objects and cyclic reference
    counts.

    d) What is a sufficient condition for susceptability to deadlock.

    etc etc
    Gianni Mariani, Aug 14, 2005
    #3
  4. On Sun, 14 Aug 2005 09:59:07 -0700, Gianni Mariani
    <> wrote:

    >opistobranchia wrote:
    >> I know this gets asked all the time but.....
    >> I am a fresh grad. I have taken a year of java and 1/2 year of C++ and
    >> OO Design and Analysis. I have strong Java skills and I have done
    >> projects in c++. But I am pretty sure that I am getting this job as a
    >> java/C++ software engineer. I want to put out a good impression since
    >> it is with a real good company and a great opportunity for me with
    >> real smart people. What book do you rec. that I study before?
    >>
    >> I am currently reading C++ Gotchas: Avoiding Common Problems in Coding
    >> and Design.

    >
    >When I interview, I look for a solid basic understanding of sofware
    >development in these areas.
    >
    >1. Basic computer science

    They did that
    >2. Experience with collaboration tools (CVS, subversion)

    Got CVS export/import checkout tagging and branching
    >3. Build experience (make, ant etc)

    Both but ant usually done for me by IDE in java. Used make before but
    would only know real basic questions. I will review that too before.
    >4. Knowledge of some standard libraries and tools

    I know iterator, list, stack, string, vector sstream off the top. But
    will review this as well.
    >5. Evidence of "passion" for software development
    >

    That is me, and I let them know that.
    >As for basic computer science, there are a number of very basic things
    >that very unfortunately, many programmers just don't know.
    >
    >e.g.
    >a)
    > int * p;
    >
    > what is (p+1) ?
    >

    This is an error since p does not point to anything, it must point to
    something first. However is p pointed to an array int object then it
    would now point to the next item in the array.
    >b) ( !a && !b ) == !( a || b )
    >

    This is demorgans law. We can use boolean algebra or a truth table to
    show that they are both equal
    >c) System design issues - reference counted objects and cyclic reference
    >counts.
    >

    Used for garbage collecting. When keep track of the total references
    to a object. When the count is zero it is ready to be deleted. Cylic
    reference count is the count of a ref b and also b ref a.
    >d) What is a sufficient condition for susceptability to deadlock.
    >

    Threada has a lock on resource1, and is waiting on resource2 before it
    releases its lock on resource1. Threadb has a lock on resource2 and
    is waiting for threada or is waiting on resource1 before is releases
    resource2. =Deadlock since everybody needs the other to finish
    >etc etc


    Would that be good? Do you have some more interview questions?

    Thanks for the tips on the books too. I am liking Effective C++ Third
    Edition 55 Specific Ways to Improve Your Programs and Designs. I also
    subcribe to C++ users journals so I have the last 2 years laying
    around. That is good to know, I will start reading more of the
    articles.
    opistobranchia, Aug 14, 2005
    #4
  5. opistobranchia wrote:
    ....
    >
    >>5. Evidence of "passion" for software development
    >>

    >
    > That is me, and I let them know that.


    I'd be looking for evidence: i.e Did you write any open source code ?
    Are you a member of an open source project? Have you filed any bugs on
    open source projects ? Do you have any pet project you have worked on ?
    Have you answered any questions on comp.lang.c++ ? Do you attend ACCU
    meetings (or other associations or UGs) ? Which journals do you read ?

    >
    >>As for basic computer science, there are a number of very basic things
    >>that very unfortunately, many programmers just don't know.
    >>
    >>e.g.
    >>a)
    >> int * p;
    >>
    >> what is (p+1) ?
    >>

    >
    > This is an error since p does not point to anything, it must point to
    > something first. However is p pointed to an array int object then it
    > would now point to the next item in the array.


    50% of people I interview (phone screen) do not know that.

    >
    >>b) ( !a && !b ) == !( a || b )
    >>

    >
    > This is demorgans law. We can use boolean algebra or a truth table to
    > show that they are both equal


    Sure, I'm still astounded to see lots of code that looks like :

    if ( !( !a && !b ) ) .... :-( // some of which I wrote myself :-((

    >
    >>c) System design issues - reference counted objects and cyclic reference
    >>counts.
    >>

    >
    > Used for garbage collecting. When keep track of the total references
    > to a object. When the count is zero it is ready to be deleted. Cylic
    > reference count is the count of a ref b and also b ref a.


    So what happens when there is a cyclic reference using reference counts?

    >
    >>d) What is a sufficient condition for susceptability to deadlock.
    >>

    >
    > Threada has a lock on resource1, and is waiting on resource2 before it
    > releases its lock on resource1. Threadb has a lock on resource2 and
    > is waiting for threada or is waiting on resource1 before is releases
    > resource2. =Deadlock since everybody needs the other to finish


    d) What is the minimum sufficient condition for susceptability to deadlock.

    I mis-wrote that - the *minimum* sufficient condition. You wrote a
    single condition. Or said in another way: "If I have N resources and T
    threads, what do I have to guarentee *not to do* to avoid any
    possibility of deadlock."


    >
    >>etc etc

    >
    >
    > Would that be good? Do you have some more interview questions?


    Not handy. There are plenty of web sites - some of them have very very
    poor questions (where some of the questions are plain wrong). Actually,
    the FAQ for comp.lang.c++ is excellent.

    >
    > Thanks for the tips on the books too. I am liking Effective C++ Third
    > Edition 55 Specific Ways to Improve Your Programs and Designs. I also
    > subcribe to C++ users journals so I have the last 2 years laying
    > around. That is good to know, I will start reading more of the
    > articles.
    >


    Good luck !
    Gianni Mariani, Aug 14, 2005
    #5
  6. opistobranchia

    Earl Purple Guest

    Gianni Mariani wrote:

    > I'd be looking for evidence: i.e Did you write any open source code ?
    > Are you a member of an open source project? Have you filed any bugs on
    > open source projects ? Do you have any pet project you have worked on ?
    > Have you answered any questions on comp.lang.c++ ? Do you attend ACCU
    > meetings (or other associations or UGs) ? Which journals do you read ?


    You sound like one who is overly strict and would never have given
    yourself your first job. It does, of course, depend on the role you are
    recruiting for but you seem to expect too much.

    By the way, I have never taken part in any formal open-source project
    that I have posted code for general use and answered many questions
    here and on CodeGuru.

    I don't subscribe to any journals.

    > So what happens when there is a cyclic reference using reference counts?


    Then of course your reference counting will never go down to 0 and
    you'll get leaks. It's good design that will ensure that does not
    happen. Good design does not mean having played with the right CASE
    tool for the sufficient amount of time. It means having brains and
    using them.

    > d) What is the minimum sufficient condition for susceptability to deadlock.
    >
    > I mis-wrote that - the *minimum* sufficient condition. You wrote a
    > single condition. Or said in another way: "If I have N resources and T
    > threads, what do I have to guarentee *not to do* to avoid any
    > possibility of deadlock."


    Again, good design. It's easy enough to say you must obtain resource A
    before B etc. You can possibly even enforce that. You should implement
    RAII properly.

    But if the interviewee doesn't know what RAII means then prompt him
    because he may have been using it perfectly for years without using its
    name. I have failed many interviews for not knowing the flashy names
    for techniques I have been using for years (particularly design
    patterns).

    > Not handy. There are plenty of web sites - some of them have very very
    > poor questions (where some of the questions are plain wrong). Actually,
    > the FAQ for comp.lang.c++ is excellent.


    Yes and I know it very well. Perhaps I should subscribe to the journals
    too. Though jobs that require C++ and little else are few and far
    beyond.
    Earl Purple, Aug 15, 2005
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    334
  2. grappletech
    Replies:
    28
    Views:
    742
    Gernot Frisch
    Nov 28, 2006
  3. Replies:
    10
    Views:
    510
  4. com.lang.apl
    Replies:
    0
    Views:
    321
    com.lang.apl
    Apr 28, 2009
  5. Dingjiu
    Replies:
    50
    Views:
    1,634
    Tim Rentsch
    Jun 2, 2009
Loading...

Share This Page