Amazon Interview Question


Country: United States




Comment hidden because of low score. Click to expand.
1
of 1 vote

class Marks
{
	private int marks1;
	private int marks2;
	private int marks3;
	private int maxMarks;
	public Marks(int m1, int m2, int m3)
	{
		marks1 = m1;
		marks2 = m2;
		marks3 = m3;
		maxMarks = (m1>m2?m1:m2)>m3?(m1>m2?m1:m2):m3;
	}
	public int gerMaxMarks()
	{
		return maxMarks;
	}
	
	public bool isPass()
	{
		return ((marks1+marks2+marks3)/3)>=40?true:false;
	}
}

class StudentList
{
	private List<Marks> allMarks;
	public StudentList()
	{
		allMarks = new ArrayList<Marks>();
	}
	public int totalStudents()
	{
		return allMarks.length;
	}
	public int passCount()
	{
		int count=0;
		for(Marks m : allMarks)
			if(m.isPass())
				count++;
		return count;
	}
}

- Rahul August 31, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
1
of 1 vote

Good answer

Just a small note though:

((marks1+marks2+marks3)/3)>=40?true:false;

is the same as

((marks1+marks2+marks3)/3)>=40;

- Anonymous September 02, 2014 | Flag
Comment hidden because of low score. Click to expand.
1
of 1 vote

class Marks {
	private int marks1, marks2, marks3, maxMarks;
	
	public Marks(int a, int b, int c) {
		marks1 = a;
		marks2 = b;
		marks3 = c;
		maxMarks = getMax(marks1, marks2, marks3);
	}
	
	public int getMaxMarks() {
		return maxMarks;
	}
	
	public boolean isPass() {
		if ((marks1 + marks2 + marks3)/3 >= 40) {
			return true;
		}
		return false;
	}

	private int getMax(int a, int b, int c) {
		return getHigher(getHigher(a, b), c);
	}
	
	private int getHigher(int a, int b) {
		if (a > b) {
			return a;
		}
		return b;
	}
}

import java.util.ArrayList;
import java.util.List;

class StudentList {
	private List<Marks> allMarks;
	
	public StudentList() {
		allMarks = new ArrayList<Marks>();
	}
	
	public int totalStudents() {
		return allMarks.size();
	}
	
	public int passCount() {
		int count = 0;
		for (Marks m : allMarks) {
			if (m.isPass()) {
				count++;
			}
		}
		return count;
	}
}

- Gurpreet September 02, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

public class Marks
{

	public static int final maxMarks;
	private int marks1;
	private int marks2;
	private int marks3;

	public Marks()
	{
	}
	
	public Marks(int marks1, int marks2, int marks3)
	{
		this.marks1 = marks1;
		this.marks2 = marks2;
		this.marks3 = marks3;
		maxMarks = 100;
	}
	
	public int getMarks1()
	{
		return this.marks1;
	}
	
	public void setMarks1(int marks1)
	{
		this.marks1 = marks1;
	}
	
	public int getMarks2()
	{
		return this.marks2;
	}
	
	public void setMarks2(int marks2)
	{
		this.marks2 = marks2;
	}
	
	public int getMarks3()
	{
		return this.marks3;
	}
	
	public void setMarks3(int marks3)
	{
		this.marks3 = marks3;
	}
	
	public int getMaxMarks()
	{
		return Math.max(marks1, Math.max(marks2,marks3));
	}
	
	public boolean isPass()
	{
		return ((marks1+marks2+marks3)/3) >= 40.0f;
	}	
}


import java.util.ArrayList;
public class StudentList{
	private ArrayList<Marks> allMarks;
	public StudentList()
	{
		allMarks = new ArrayList<Marks>();
	}
	
	public int totalStudents()
	{
		return allMarks.size(); 
	}
	
	public int passCount()
	{
		int count = 0;
		for(Marks m : allMarks)
		{
                    if(m.isPass())
                        count++;
		}
		return count;
	}
	
}

- abhay.lolekar August 31, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 votes

if you provide setters and getters for the marks, you should update maxMarks accordingly.

furthermore, you don't need to store the marks at all to fulfill the requirements of the exercise, you only need to remember the maximum and determine if passed or failed in the constructor.

- BigM September 02, 2014 | Flag
Comment hidden because of low score. Click to expand.
0
of 0 vote

public class StudentList {
	
	private Marks[] allMarks;

	public Marks[] getAllMarks() {
		return allMarks;
	}

	public void setAllMarks(Marks[] allMarks) {
		this.allMarks = allMarks;
	}
	
	
	public int totalStudents() {
		
		return allMarks.length;
	}
	
	public int passCount() {
		
		int tot = 0;
		for(int i=0;i<totalStudents();i++) {
			
			if(allMarks[i].isPass())
				tot+=1;
		}
		
		return tot;
	}
	
	public static void main(String[] args) {
		Marks[] m = new Marks[3];
		m[0] = new Marks(41,33,32);
		m[1] = new Marks(23, 45, 67);
		m[2] = new Marks(40, 40, 45);
		
		StudentList l = new StudentList();
		l.setAllMarks(m);
		System.out.println(l.totalStudents()+"  "+l.passCount());
	
	}
}

class Marks {
	
	private int marks1;
	private int marks2;
	private int marks3;
	private int maxMarks;
	public Marks(int marks1,int marks2 , int marks3) {
		
		this.marks1 = marks1;
		this.marks2 = marks2;
		this.marks3 = marks3;
		
		this.maxMarks = this.marks1 > this.marks2 ? (this.marks1>this.marks3 ? marks1 : marks3) : (this.marks2 > this.marks3 ? this.marks2 : this.marks3);
		
		
	}
	
	public int getMarks1() {
		return marks1;
	}
	public void setMarks1(int marks1) {
		this.marks1 = marks1;
	}
	public int getMarks2() {
		return marks2;
	}
	public void setMarks2(int marks2) {
		this.marks2 = marks2;
	}
	public int getMarks3() {
		return marks3;
	}
	public void setMarks3(int marks3) {
		this.marks3 = marks3;
	}

	public int getMaxMarks() {
		return maxMarks;
	}

	public void setMaxMarks(int maxMarks) {
		this.maxMarks = maxMarks;
	}
	
	public boolean isPass() {
		
		return (getMarks1()+getMarks2()+getMarks3())/3 >= 40 ? true : false;
		
	}
	
	public static void main(String[] args) {
		
		Marks m = new Marks(41, 40,38);
		System.out.println(m.getMaxMarks()+" "+m.isPass());
	}
}

- shukad333 August 31, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

In Python just for fun...

class Marks(object):

    def __init__(self, mark1, mark2, mark3):
        self.mark1 = mark1
        self.mark2 = mark2
        self.mark3 = mark3
        self.maxmark = max([mark1, mark2, mark3])

    def getMaxMarks(self):
        return self.maxmark

    def isPass(self):
        return (self.mark1 + self.mark2 + self.mark3) / 3 >= 40


class StudentList(object):

    def __init__(self, all_marks):
        self.all_marks = all_marks

    def totalStudents(self):
        return len(self.all_marks)

    def passCount(self):
        return sum([1 for mark in self.all_marks if mark.isPass()])

if __name__ == '__main__':
    # simple test...prints 1
    print repr(StudentList([Marks(35, 40, 45), Marks(15, 15, 9), Marks(30, 30, 30)]).passCount())

- Dan August 31, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

function _getMaxMarks() {
"use strict"
        return this.maxMarks
}
function _isPass() {
"use strict"
        return ((this.marks1 + this.marks2 + this.marks3) / 3) >= 40
}
function Marks(marks1, marks2, marks3) {
"use strict"
        this.marks1 = marks1
        this.marks2 = marks2
        this.marks3 = marks3
        this.maxMarks = Math.max.apply(Math, arguments)
}

function _totalStudents() {
"use strict"
        return this.allMarks.length
}
function _passCount() {
"use strict"
        return this.allMarks.filter(function (marks, i, allMarks) {
                return marks.isPass()
        }).length
}
function StudentList(allMarks) {
"use strict"
        this.allMarks = allMarks
}

Marks.prototype.getMaxMarks = _getMaxMarks
Marks.prototype.isPass = _isPass
StudentList.prototype.totalStudents = _totalStudents
StudentList.prototype.passCount = _passCount

- srterpe August 31, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

#include <iostream>
#include <vector>
#include <iterator>

class Marks {
private:
  int marks1, marks2, marks3, maxMarks;
public:
  Marks() {}
  Marks(int i, int j, int k): marks1(i), marks2(j), marks3(k), maxMarks(std::max(marks1,std::max(marks2,marks3))) {}

  auto getMaxMarks() const -> int {
    return maxMarks;
  }

  auto isPass() const -> bool {
    return ((marks1+marks2+marks3)/3 >= 40 ? true : false);
  }
};

class StudentList {
private:
  std::vector<Marks> allMarks;
public:
  StudentList(std::vector<Marks> allMarks): allMarks(allMarks) {}
  
  auto totalStudents() const -> int {
    return allMarks.size();
  }
  
  auto passCount() const -> int {
    int count = 0;
    for (auto& mark : allMarks) {
      count += (mark.isPass() ? 1 : 0);
    }
    return count;
  }
};

- C++ Just Because Why Not? Okay September 01, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

//Marks Class

public class Marks {
private int marks1, marks2, marks3, maxMarks;
private boolean isPass;
public Marks(int marks1, int marks2, int marks3){
this.marks1 = marks1;
this.marks2 = marks2;
this.marks3 = marks3;
this.maxMarks = getMaxMarks(marks1, marks2, marks3);
this.isPass = isPass(marks1, marks2, marks3);
}
private static int getMaxMarks(int...marks){
int max = 0;
if(marks.length > 0){
max = marks[0];
}

for(int i:marks){
if(i>max){
max = i;
}
}
return max;
}
private static boolean isPass(int...marks){
int avg = 0;
for(int i:marks){
avg += i;
}
if((avg/marks.length)>=40){
return true;
}
else{
return false;
}

}
public boolean isPass() {
return isPass;
}
}


//StudentList Class

- Milan September 02, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 votes

Please ignore this code snippet.

- Milan September 02, 2014 | Flag
Comment hidden because of low score. Click to expand.
0
of 0 vote

//Marks Class

public class Marks {
	private int marks1, marks2, marks3, maxMarks;
	private boolean isPass;
	public Marks(int marks1, int marks2, int marks3){
		this.marks1 = marks1;
		this.marks2 = marks2;
		this.marks3 = marks3;
		this.maxMarks = getMaxMarks(marks1, marks2, marks3);
		this.isPass = isPass(marks1, marks2, marks3);
	}
	private static int getMaxMarks(int...marks){
		int max = 0;
		if(marks.length > 0){
			max = marks[0];
		}
		
		for(int i:marks){
			if(i>max){	
				max = i;
			}
		}
		return max;
	}
	private static boolean isPass(int...marks){
		int avg = 0;
		for(int i:marks){
			avg += i;
		}
		if((avg/marks.length)>=40){
			return true;
		}
		else{
			return false;
		}
		
	}
	public boolean isPass() {
		return isPass;
	}
}


//StudentList Class
public class StudentList {
	private List<Marks> allMarks;
	
	public StudentList(){
		allMarks = new ArrayList<Marks>();
	}
	
	public int totalStudents(){
		return this.allMarks.size();
	}
	
	public int passCount(){
		int passCnt = 0;
		for(Marks m:this.allMarks){
			if(m.isPass()){
				passCnt++;
			}
		}
		return passCnt;
	}
}

- Anonymous September 02, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Is this seriously an Amazon question? Sounds like a coding assignment for a first foray into OOP or something.

- Anonymous September 03, 2014 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Congrats on doing this guys homework...Amazon doesn't ask questions this simple

- Anonymous September 03, 2014 | Flag Reply


Add a Comment
Name:

Writing Code? Surround your code with {{{ and }}} to preserve whitespace.

Books

is a comprehensive book on getting a job at a top tech company, while focuses on dev interviews and does this for PMs.

Learn More

Videos

CareerCup's interview videos give you a real-life look at technical interviews. In these unscripted videos, watch how other candidates handle tough questions and how the interviewer thinks about their performance.

Learn More

Resume Review

Most engineers make critical mistakes on their resumes -- we can fix your resume with our custom resume review service. And, we use fellow engineers as our resume reviewers, so you can be sure that we "get" what you're saying.

Learn More

Mock Interviews

Our Mock Interviews will be conducted "in character" just like a real interview, and can focus on whatever topics you want. All our interviewers have worked for Microsoft, Google or Amazon, you know you'll get a true-to-life experience.

Learn More