Goldman Sachs Interview Question
SDE-2sCountry: United States
Interview Type: In-Person
public class Doubleton {
private static volatile Doubleton _instance1;
private static volatile Doubleton _instance2;
private static int count = 0;
private Doubleton() {
}
public static Doubleton getInstance() {
if (count++ % 2 == 0) {
if (_instance1 == null) {
synchronized (Doubleton.class) {
if (_instance1 == null) {
_instance1 = new Doubleton();
}
}
}
return _instance1;
} else {
if (_instance2 == null) {
synchronized (Doubleton.class) {
if (_instance2 == null) {
_instance2 = new Doubleton();
}
}
}
return _instance2;
}
}
}
#include <iostream>
#include <vector>
#include <stdio.h>
class multiTon
{
private:
static std::vector<multiTon *> obj;
int id;
static int counter;
public:
multiTon(int Identity)
{
id = Identity;
}
~multiTon()
{
}
static multiTon * getInstance()
{
return obj[counter++ % 2];
}
int getId()
{
return id;
}
};
int multiTon::counter = 0;
std::vector<multiTon *> multiTon::obj {new multiTon(0), new multiTon(1)};
int main()
{
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
}
#include <iostream>
#include <vector>
#include <stdio.h>
class multiTon
{
private:
static std::vector<multiTon *> obj;
int id;
static int counter;
public:
multiTon(int Identity)
{
id = Identity;
}
~multiTon()
{
}
static multiTon * getInstance()
{
return obj[counter++ % 2];
}
int getId()
{
return id;
}
};
int multiTon::counter = 0;
std::vector<multiTon *> multiTon::obj {new multiTon(0), new multiTon(1)};
int main()
{
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
}
#include <iostream>
#include <vector>
#include <stdio.h>
class multiTon
{
private:
static std::vector<multiTon *> obj;
int id;
static int counter;
public:
multiTon(int Identity)
{
id = Identity;
}
~multiTon()
{
}
static multiTon * getInstance()
{
return obj[counter++ % 2];
}
int getId()
{
return id;
}
};
int multiTon::counter = 0;
std::vector<multiTon *> multiTon::obj {new multiTon(0), new multiTon(1)};
int main()
{
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
printf ("%d \n",multiTon::getInstance()->getId());
}
package designpattern;
public class DoubleTon {
final static private DoubleTon instance1=new DoubleTon();
final static private DoubleTon instance2=new DoubleTon();
static private int counter=0;
private DoubleTon(){
}
static public DoubleTon getInstance(){
counter++;
if(counter%2==0){
System.out.println("instance1");
return instance1;
}
return instance2;
}
}
- Makarand September 04, 2017