MBA ProdMan(Product Management) Summer Internship Preparation

Summer Internship placements play an important part in shaping your MBA journey. A lot of effort is exerted to make the most of this opportunity by MBA candidates. Choosing the domain to pursue your career can be challenging in the early stages as you may not have knowledge about the entire spectrum of the domain, the nuances in it and the work you would have to do.

Preparations required for each and every domain like Consulting, Marketing, Operations, Finance, ProdMan and General Management differ a lot as the roles require different skills to excel in it. However, preparing for consulting can be a safe option as the preparations for consulting, marketing and GenMan have a certain overlap. This helps the candidates to have a backup option if they are not able to get an internship in their desired domain.

ProdMan prep can be easily accomplished by an individual pursuing his MBA. Time is a major constraint in an MBA students life, ProdMan prep would have certain overlap with other domains and would help the individual to crack case interviews. The approach followed for cracking the PM interview is same as the one required for Consult/GenMan roles. ProdMan roles typically include liaison between Business and Tech team, planning for next deliverables of the product. The role gives the PM complete autonomy in deciding the future of the product.

Shortlists for the consulting companies would be out first, followed by finance and a few prod man companies. Shortlisting criteria for the companies differ as per the roles they have to offer.

Who should prepare for ProdMan roles:

B. Tech Candidates who have prior experience in Services industry either from Dev/Business side and others with previous related work experience.

Shortlists and Hotlists:

The shortlists would come to the candidates with the above-mentioned credentials to their names. As an MBA comes with its own twist and turns, getting a shortlist doesn’t have any effect as the Big IT giants would have their preferred candidates who would be on their Hotlists. The Hotlists of candidates would come in a day before the scheduled interviews.

GD Round

ProdMan requires candidates to go through the GD rounds. For GD preparation go through the sector reports shared by the clubs in the college. This would provide you with enough factual data about different industries to be used in the GDs.General awareness is a must to crack the GDs. The candidate should go through mock GDs conducted by college clubs to get a flavour of the heat thats going to be there on the final GD day.
Don’t lose your calm. Stay focused and make it a point to speak at least 2-3 sensible points. Normal GD evaluation criteria by panellists would be done. If you are thorough with the basics, the round should be a piece of cake to crack.

Interview Round Prep

The interviewers would ask you questions to judge your thought process and logical flow of ideas to structure and find solution to a problem. The questions can be mainly categorized into two types:

1) Guesstimates

The guesstimate problems for consult and gen man preparation are more than enough to crack this section of the interview. Keep the facts about the population of Metro cities, India, etc handy. This would greatly help you to reach the solution to the guesstimates.

2) ProdMan case solving

The following books are to be referred for Prod Man interviews:

Reference Books:

      1. Cracking the PM Interview
      2. Decode and Conquer

The starting 13 chapters from Cracking the PM interview would provide the groundwork in understanding the roles and responsibilities of the job. The main crux starts in Chapter 14: Product Questions. Make sure you go through all the cases discussed in the book.

The important aspects to focus upon are that the solutions formed should make use of the concept of MECE.

MECE: Mutually exclusive and collectively exhaustive.

This would ensure that an entire holistic solution is presented to the interviewer.

Decode and Conquer should be the go-to book for solving and deep-diving into interview cases. The book talks about CIRCLES method. Following the method would ensure that you don’t miss into any aspects of the problem while presenting the interviewer with your solution. Ensure that there is two-way communication with the interviewer and all assumptions made by you for solving the case are in sync with the interviewer’s expectations.

CIRCLES Method

The steps of this method are:

C – Clarify. Ask questions to clarify anything that you are unsure of. Confirm your assumptions.

I – Identify the customers as personas like food lovers, cricket fans, high-speed users etc.

R — Report customer needs (use cases).

C — Cut, Through prioritization. The use cases should be ranked based on different attributes (revenue, feasibility, complexity).

L — List solutions.

E — Evaluate the tradeoffs of the solutions presented.

S — Summarize

The circles’ method would be greatly beneficial in forming a skeletal solution which can iteratively build upon.

For case solving, data samples can always be clustered using the HML method.

HML method

H – High
M – Medium
L – Low

Segregating the data into such buckets would greatly help you to form solutions to the problems faced by different categories as you would be focusing upon the minute aspects of the problems.

At the end of the case, state the final solution you would recommend, the benefits and the tradeoffs of the solution. Criticizing your answer in modest terms would take away the opportunity from the interviewer to do so as it highlights that you have critically analysed your solution and have looked through the loopholes in the solution presented by you.

Misc

The HR questions should be given equal importance, more but not less. Some companies would also be conducting psychometric tests to evaluate the candidate-job fit. Go through your resume thoroughly. Every point on the resume should be known in and out.
Prepare questions like:
1) Favourite product? Why? Features?
2) The product you dislike? Why?
3) Website XYZ, features liked/disliked? Add-on features to be incorporated?
4) Company product research (Eg. Microsoft product Suite, Amazon AWS offerings, etc)

Technology is ever-changing. Keeping in touch with the latest happenings in the field would help you acclimatize with the questions asked and incorporate the latest technological advancements in the solutions you would formulate. Follow the below blogs to stay in touch with the technology.

Blogs to follow:

  1. Techcrunch
  2. Verge
  3. TNW
  4. LifeHacker
  5. Mashable
  6. Engadget
  7. Coding Horror
  8. McKinsey Insights Tech

Cheers to successfully cracking the PM interviews 😛

Feel free to reach out to me. Suggestions for improvements are welcomed.

 

Reference:

  1. https://www.impactinterview.com/2016/06/circles-method-product-design-framework/

Technology Analyst Interview Prep

Nervousness and lack of preparation define the placement season. To help the interviewees prepare for the interviews and bag the dream job that you have always wanted, below is the compendium for the same.

The placement interviews will usually have five to eight interview rounds.
The first and foremost round will check the individuals IQ, mathematical ability, and subject matter basics.

For mathematics preparation:

1) Any book which gives a fair idea about speed calculations. TIME CAT speed enhancement booklet can also be used.
Reference: Secrets of Mental Math can be a good starter.

2) https://www.indiabix.com/ for the logical reasoning, verb and quant part.

Subject matter preparation:

This section of the interviews would deal with the content that the person has learned in his 3-3.5 engineering stint. Here, no fancy questions will be asked. Stick to the basics and your ship will sail through smoothly.

Programming Language: C/C++, Java, Python

Know the basics of all the languages mentioned herein. However, study one OOP language in detail, preferably Java. The industry makes use of Java profoundly. Moreover, other upcoming languages like Scala and Kotlin use Java behind the scenes. Proficiency in Java would help a long way ahead.

Areas to look out are Java basics, OOP basics, and their implementations in Java, class, interface, abstract class, memory allocation, heap, stack, multi-threading, concurrency, Java JDK, JRE, etc.
Reference: https://www.geeksforgeeks.org/java/

Web technologies: HTML, CSS, Angular js, React Js, Node js

The working of HTML, CSS should be known by the candidate. The basic questions asked can be, why do we call CSS as CSS?
Knowledge of any other UI development framework is a cherry on the pie.


Database:
MySQL, MongoDB

Interviewees should be well equipped in writing database queries using aggregate functions, having by, group by, nested queries, ACID properties, and normalization of data. Hands-on experience goes a long way as it helps the candidate emulate confidence from within.

Data Structures and Algorithms:

DSA is the most dreaded, as well as the most critical part of the tech interviews. Ensure that the interviewee gives enough time for preparation of this section. Practicing the algorithms for 15-30 days should give the interviewee proficiency to clear their interviews.
Reference Book:
In C/C++: Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles
In Java: Data Structures and Algorithms Made Easy in Java: Data Structure and Algorithmic Puzzles

The book is very structured and will help interviewee in learning the basic concepts and developing mastery in the subject.

Geeks for Geeks should always be used to supplement the interview preparations.
The key areas to focus are searching and sorting algorithms with their complexities, stacks, queues, linked lists, recursion, greedy algorithms, graphs, and trees. The interviewee should have an in-depth study of this as much as possible.
To supplement the theoretical reading with practical experience, Hackerrank provides a good interview kit for prep.

Hackerrank: Interview Kit

The interviewees are free to use other websites like codechef, SPOJ, topcoder, etc as per their convenience.

Interview Puzzles

Many times the candidates are bamboozled by the random puzzles thrown at them in the final stages of the interview. These questions are asked to check the interviewee’s thought process and the way he structures his answer with logical reasoning. It is not always feasible to solve the questions in the spur of the moment. So, practice for this is much needed. These simple questions can be the differentiating factor between the interviewee and the selected candidates.
Here is a quick reference to the question bank for the same from our beloved GFG.

Reference: Geeks for Geeks Puzzles

HR Interview

This round ensures that the candidate that the company is hiring is well suited in their work culture and meets the standards practiced by the company. The HR Interview round is very much the interview round where much of the screw-ups happen. The mishaps happen because of the negligent attitude of the candidates for this round. Please note the fact that this round is as much important as any other round of interview. More but not less. The HR has the final say whether the candidate is deemed fit for the company or not.

Prepare the basic HR questions like:
1) Tell me about yourself.
2) What are your ambitions?
3) Where do you see yourself in 5-10 years?
4) Why XYZ company?
5) How does this job align with your aspirations?

Reference: HR Interview Questions

Preparing for the HR interview questions will help you throughout your 40-year long career. The insights that you will gain about yourselves from this activity will significantly shape the course of further action by you.

Final Thoughts….

It’s better to accept that you don’t know a particular question in an interview. However, supplement it with the fact that you are attempting to answer it based on your intuition.
Drive the interview in the area where you have your forte. Keep in touch the latest advancements in the field of technology like Cloud, Big Data, Data Analytics, IOT, Blockchain, etc.
Efforts in the right direction, with the right attitude and mindset, will help you achieve the extra mile in your lives. The journey is a long one. There will be failures in the path taken. The attitude to learning from the failures and giving the best shot every time will ensure that you come out of the placement season with flying colors..!!!

All the best Amigos! Rock it 🙂

Please feel free to reach out to me in case of any queries and difficulties.

 

References:
1) https://www.geeksforgeeks.org/
2) https://www.amazon.in/
3) https://www.hackerrank.com/
4) https://career.guru99.com/
5) https://www.indiabix.com/

 

Run JNLP Program

JNLP

Java Web Start (also known as JavaWS, javaws or JAWS) is a framework developed by Sun Microsystems (now Oracle) that allows users to start application software for the Java Platform directly from the Internet using a web browser. Some key benefits of this technology include seamless version updating for globally distributed applications and greater control of memory allocation to the Java virtual machine.

Run jnlp files

Install the Iced Tea:

sudo apt-get install icedtea-netx icedtea-8-plugin

To run jnlp file, execute it by:

javaws /Directory/xyz.jnlp

Change iced tea settings:

itweb-settings

Known Issues on execution:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/usr/bin/xprop" "execute")

https://dev.openecard.org/boards/2/topics/174

Reference:

https://en.wikipedia.org/wiki/Java_Web_Start

https://askubuntu.com/questions/18792/how-can-i-view-or-start-java-web-start-applications

MultiChain Web Demo

Follow the steps listed down in the Github repository for the same.

Github Repo: https://github.com/MultiChain/multichain-web-demo

Setting up in Local:

Starting the web server

$ cd ~/public_html
$ php -S localhost:8000

The terminal will show:

PHP 7.2.7-0ubuntu0.18.04.2 Development Server started at Thu Aug 2 17:46:31 2018
Listening on http://localhost:8000
Document root is /home/ajinkyawavare/Documents/BlockChain/MultiChain/multichain-web-demo
Press Ctrl-C to quit.
[Thu Aug 2 17:46:46 2018] 127.0.0.1:45556 [200]: /?chain=default
[Thu Aug 2 17:46:47 2018] 127.0.0.1:45574 [200]: /bootstrap.min.css
[Thu Aug 2 17:46:47 2018] 127.0.0.1:45576 [200]: /styles.css
[Thu Aug 2 17:48:43 2018] 127.0.0.1:45588 [200]: /?chain=default&page=permissions
[Thu Aug 2 17:48:43 2018] 127.0.0.1:45602 [200]: /bootstrap.min.css
[Thu Aug 2 17:48:43 2018] 127.0.0.1:45604 [200]: /styles.css

Accessing Explorer from localhost:

Accessing Explorer installed on the remote server:
Make sure that you update the network and security settings in the aws.
Also take a note of the change in the host accessible in the chain1.conf file here.
You need to install php and php curl for the web page to get served.
Also nginx or apache htt-server needs to be installed in your machine.

MultiChain Explorer

Follow the steps listed down in the Github repository for the same.

Setting up in Local:

Accessing Explorer from localhost


Accessing Explorer installed on the remote server:
Make sure that you update the network and security settings in the aws.
Also take a note of the change in the host accessible in the chain1.conf file here.

 

Github Repo: https://github.com/MultiChain/multichain-explorer

 

MultiChain Mining

In MultiChain, block creators must prove their identity by signing blocks

Block signatures

Block signatures are embedded inside the OP_RETURN metadata of the coinbase transaction, using a regular bitcoin-style signature format. The payload signed by the block creator is the full block header, with the following modifications:

  • The merkle_root is recalculated based on the txid of the coinbase transaction with the OP_RETURN removed. This prevents a dependency loop from block signature → coinbase txid → merkle root → block header → block signature.
  • The nonce field is set to 0. This avoids having to recalculate the signature for every attempt at finding a block hash to match the target difficulty. However it does lead to some malleability in that a user without mine permissions could generate a block with the same content as a valid block, but with a different nonce. Seeing as the nonce serves no purpose other than to randomize the block’s content for its hash, this should not be a source of concern.

In the case of a permissioned MultiChain blockchain, consensus is based on block signatures and a customizable round-robin consensus scheme, rather than proof-of-work as in bitcoin.

On the first server, run:

grant 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV mine

(Even though the permission is called mine note that there is no real “mining” taking place, in the sense of proof-of-work.) On the second server, check that two permitted block validators are listed:

listpermissions mine

Run this on both servers to maximize the degree of validator randomness:

setruntimeparam miningturnover 1

Now wait for a couple of minutes, so that a few blocks are added. (This assumes you left the block time on the default of 15 seconds.) On either server, check the creators of the last few blocks:

listblocks -10

The address of the validator of each block is in the miner field of each element of the response.

Snippet:
RR Mining

Node-1 Terminal | Node-2 Terminal

 

Reference: https://www.multichain.com/developers/mining-block-signatures/
https://www.multichain.com/getting-started/

MultiChain Streams

MultiChain streams enable a blockchain to be used as a general purpose append-only database, with the blockchain providing timestamping, notarization and immutability. A MultiChain blockchain can contain any number of streams, where the data published in every stream is stored by every node. If a node chooses to subscribe to a stream, it will index that stream’s contents to enable efficient retrieval in various ways.

Each stream is an ordered list of items, in which each item has the following characteristics:

  • One or more publishers who have digitally signed that item.
  • A key between 0 and 256 bytes in length.
  • Some data, which can reach many megabytes in size.
  • Information about the item’s transaction and block, including its txid, blockhash, blocktime, and so on.

Like native assets, MultiChain streams can be referred to in any of three ways:

  • An optional stream name, chosen at the time of stream creation. If used, the name must be unique on a blockchain, between both assets and streams. Stream names are stored as UTF-8 encoded strings up to 32 bytes in size and are case insensitive.
  • A createtxid, containing the txid of the transaction in which the stream was created.
  • A streamref which encodes the block number and byte offset of the stream creation transaction, along with the first two bytes of its txid.

If root-stream-name in the blockchain parameters is a non-empty string, it defines a stream which is created with the blockchain and can be written to immediately. The root stream’s createtxid is the txid of the coinbase of the genesis block, and its streamref is 0-0-0.

Create a stream, which can be used for general data storage and retrieval. On the first server:

create stream stream1 false

The false means the stream can only be written to by those with explicit permissions. Let’s see its permissions:

listpermissions stream1.*

So for now, only the first server has the ability to write to the stream, as well as administrate it. Let’s publish something to it, with key key1:

publish stream1 key1 73747265616d2064617461

The txid of the stream item is returned. Now let’s see that the stream is visible on another node. On the second server:

liststreams

(The root stream was in the blockchain by default.) Now we want the second server to subscribe to the stream, then view its contents:

subscribe stream1
liststreamitems stream1

Now we want the second server to be allowed to publish to the stream. On the first server:

grant 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV send
grant 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV stream1.write

Note that the address needs both general send permissions for the blockchain, as well as permission to write to this specific stream. Now let’s publish a couple of items on the second server:

publish stream1 key1 736f6d65206f746865722064617461
publish stream1 key2 53747265616d732052756c6521

Now let’s query the stream’s contents in many different ways. Back on the first server:

subscribe stream1
liststreamitems stream1 (should show 3 items)
liststreamkeys stream1 (2 keys)
liststreamkeyitems stream1 key1 (2 items with this key)
liststreampublishers stream1 (2 publishers)
liststreampublisheritems stream1 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV

Snippets:

Streams -1 (node 1 and node 2)

Streams – 2

Reference: https://www.multichain.com/developers/data-streams/
https://www.multichain.com/getting-started/

 

MultiChain Native Assets

MultiChain allows the creation & tracking of assets at the network level.

A use of  Blockchain to have defined limited native assets & let peers or nodes transact them among each other in an atomic or non-atomic manner. Anything can be defined as an asset.

Using native assets:

MultiChain allows the creation and tracking of assets at the network level

Assets in MultiChain

MultiChain supports assets natively at the blockchain level. The identifiers and quantities of assets are encoded within each transaction output, alongside the quantity of the blockchain’s native currency (which may be zero if it is not being used). Every MultiChain node tracks and verifies the quantity of assets in transactions, just as it is does with the native currency. Specifically, it checks that the total quantities of all assets in a transaction’s outputs are exactly matched by the total in its inputs. MultiChain allows each transaction output can contain any number of different assets.

In MultiChain, assets can be referred to in any of three ways:

  • An optional asset name, chosen at the time of issuance. If used, the name must be unique on a blockchain, between both assets and streams. Asset names are stored as UTF-8 encoded strings up to 32 bytes in size and are case insensitive.
  • An issuetxid, containing the txid of the transaction in which the asset was issued.
  • An assetref which encodes the block number and byte offset of the issuance transaction, along with the first two bytes of its txid.Common Commands:
    
    listpermissions issue (Check whether you have the permission to issue or not)
    issue 16bNJqp4d8JX3uL7UYr5hACWLnK2LU4f2Ep9FD aj007 100000 0.000001 (Address which has the permission to issue. Here aj007 is the asset issued. This has precison till 6 as specified in the last param)
    listassets (list the assets on the chain)
    gettotalbalances (get the total balance on the server)
    send 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV aj007 5000 (send the assets to the given address on node - 2)
    listwallettransactions (get the total transactions which have occured in the given wallet)
    
    sendwithdata 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV '{"aj007":500}' data (Sending metadata in transaction)


    Reference: https://www.multichain.com/developers/native-assets/

MultiChain

Installing MultiChain on Linux

su (enter root password)
cd /tmp
wget https://www.multichain.com/download/multichain-1.0.5.tar.gz
tar -xvzf multichain-1.0.5.tar.gz
cd multichain-1.0.5
mv multichaind multichain-cli multichain-util /usr/local/bin (to make easily accessible on the command line) exit (to return to your regular user)

We need two servers with multichain installed on them.
Try Amazon EC2.
After installing multichain and initializing the blockchain, make sure you modify the Network and security settings port numbers to allow the two nodes to communicate with each other.

1. Creating a blockchain

First we will create a new blockchain named chain1. On the first server, run this command:

multichain-util create chain1

View the blockchain’s default settings:

cat ~/.multichain/chain1/params.dat

Initialize the blockchain, including creating the genesis block:

multichaind chain1 -daemon

2. Connecting to a blockchain

Now we’ll connect to this blockchain from elsewhere. On the second server, run the following:

multichaind multichaind chain1@172.31.29.15:6461

You should be told that the blockchain was successfully initialized, but you do not have permission to connect. You should also be shown a message containing an address in this node’s wallet.

Back on the first server, add connection permissions for this address:

multichain-cli chain1 grant 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV connect,send,receive

Now try reconnecting again from the second server:

multichaind chain1 -daemon

3. Some commands in interactive mode

Before we proceed, let’s enter interactive mode so we can issue commands without typing multichain-cli chain1 every time. On both servers:

multichain-cli chain1

If you are using Windows, interactive mode is not yet available, so all commands in this guide should be preceded by multichain-cli chain1. You will also need to open another DOS command line in the directory where you installed the MultiChain executables.

Now that the blockchain is working on two nodes, you can run the commands in this section on either or both. To get general information:

getinfo

See a list of all available commands:

help

Show all permissions currently assigned:

listpermissions

Create a new address in the wallet:

getnewaddress

List all addresses in the wallet:

getaddresses

Get the parameters of this blockchain (based on params.dat file):

getblockchainparams

For each node, get a list of connected peers:

getpeerinfo

4. Streams

Now let’s create a stream, which can be used for general data storage and retrieval. On the first server:

create stream stream1 false

The false means the stream can only be written to by those with explicit permissions. Let’s see its permissions:

listpermissions stream1.*

So for now, only the first server has the ability to write to the stream, as well as administrate it. Let’s publish something to it, with key key1:

publish stream1 key1 73747265616d20646174358

The txid of the stream item is returned. Now let’s see that the stream is visible on another node. On the second server:

liststreams

(The root stream was in the blockchain by default.) Now we want the second server to subscribe to the stream, then view its contents:

subscribe stream1
liststreamitems stream1

Now we want the second server to be allowed to publish to the stream. On the first server:

grant 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV send
grant 15ZLxwAQU4XFrLVs2hwQz1NXW9DmudRMcyx2ZV stream1.write

Note that the address needs both general send permissions for the blockchain, as well as permission to write to this specific stream. Now let’s publish a couple of items on the second server:

publish stream1 key1 736f6d65206f746865722064617461
publish stream1 key2 53747265616d732052756c6521

Now let’s query the stream’s contents in many different ways. Back on the first server:

subscribe stream1
liststreamitems stream1 (should show 3 items)
liststreamkeys stream1 (2 keys)
liststreamkeyitems stream1 key1 (2 items with this key)
liststreampublishers stream1 (2 publishers)
liststreampublisheritems stream1 1... (2 items by this publisher)

Reference: https://www.multichain.com/getting-started/