Question 1
Which of the following statements is/are correct.
SMTP is a mail delivery protocol.
SMTP is a protocol to retrieve email from an email server.
IMAP is a mail delivery protocol.
IMAP is a protocol to retrieve email from an email server.
The IIT Madras BS Modern Application Development II (MAD 2) End Term paper sat on 24 Dec 2023, in the September 2023 term, set FDD1: 32 questions for 100 marks in 180 minutes. Every question is below with its answer. Take it as a timed mock test to be marked, or read it through first.
Which of the following statements is/are correct.
SMTP is a mail delivery protocol.
SMTP is a protocol to retrieve email from an email server.
IMAP is a mail delivery protocol.
IMAP is a protocol to retrieve email from an email server.
Correct answers
SMTP is a mail delivery protocol.
IMAP is a protocol to retrieve email from an email server.
Which of the following is/are correct regarding CDN.
CDN is an acronym for Content Delivery Network.
CDN is a group of servers that helps in fast delivery of web contents.
Web content is generally delivered from the closest server to the client in the network.
None of these.
Correct answers
CDN is an acronym for Content Delivery Network.
CDN is a group of servers that helps in fast delivery of web contents.
Web content is generally delivered from the closest server to the client in the network.
Which of the following statement(s) is/are false regarding javascript language?
Replit.com is an example of a javascript engine.
The language supports the concept of first class functions.
The language does not allow the implementation of user defined higher order functions.
The language can be used for DOM manipulation.
Correct answers
Replit.com is an example of a javascript engine.
The language does not allow the implementation of user defined higher order functions.
Which of the following method(s) can be used to ensure that the displayed state and system state are kept in sync at all times?
Ajax requests on each UI change
Periodic reloading of web-page
Vue bindings to update data reactively
Pure static pages with all updates rendered from server
Correct answers
Ajax requests on each UI change
Pure static pages with all updates rendered from server
Correct answers
Which of the following statement(s) is/are true regarding webhooks?
A webhook uses HTTP protocol.
A webhook uses web socket protocol.
A webhook receiver must be deployed on the same origin as the webhook initiator.
A webhook is supposed to be used for machine to machine communication.
Correct answers
A webhook uses HTTP protocol.
A webhook is supposed to be used for machine to machine communication.
Which of the following is correct regarding XSS attacks?
XSS attack is an exploit where an attacker attaches a malicious code into a website.
XSS can be used to steal the user's cookie.
XSS is a client side injection attack.
It can be avoided by validating the user's input.
Correct answers
XSS attack is an exploit where an attacker attaches a malicious code into a website.
XSS can be used to steal the user's cookie.
XSS is a client side injection attack.
It can be avoided by validating the user's input.
You are trying to build a distributed system with N servers, each of which may need to communicate with any of the other servers. Which of the following statement(s) is/are true?
With point-to-point communication, the number of connection links will grow as O(n).
With point-to-point communication, the number of connection links will grow as O(n²).
With the use of a central message broker, the number of connection links will grow as O(n).
With the use of a central message broker, the number of connection links will grow as O(n²).
Correct answers
With point-to-point communication, the number of connection links will grow as O(n²).
With the use of a central message broker, the number of connection links will grow as O(n).
Which of the following statement(s) is/are false regarding long and short polling?
A webhook is the same as short polling.
The short polling can be used to know the state of an asynchronous task, and trigger an action if the task gets completed.
The long polling cannot be achieved using HTTP protocol.
Long Polling can be used to achieve real time communication.
Correct answers
A webhook is the same as short polling.
The long polling cannot be achieved using HTTP protocol.
Which of the following statement(s) is/are true regarding caching?
It is recommended to cache the social networking apps feed responses for a longer duration.
Caching is primarily done to reduce the load from the origin server.
The shared cache is meant to serve responses to the multiple users.
A browser cannot cache JavaScript corresponding to a web page.
Correct answers
Caching is primarily done to reduce the load from the origin server.
The shared cache is meant to serve responses to the multiple users.
Which of the following statements is true regarding CORS and CSRF?
CORS stands for Cross Origin Resource Sharing.
The CORS reduces chances of malicious code by explicitly saying which URLs can be originators of data.
CSRF stands for Cross Site Request Forgery.
None of these.
Correct answers
CORS stands for Cross Origin Resource Sharing.
The CORS reduces chances of malicious code by explicitly saying which URLs can be originators of data.
CSRF stands for Cross Site Request Forgery.
Consider the following JavaScript code.
function goUpDown(num) { return new Promise((res, rej) => { setTimeout(() => { if (num < 20) { return num > 10 ? res('Go Up') : res('Go Down') } else { return rej('Number Too Large') } }, 1000) })}
async function getData() { const data3 = await goUpDown(8) const data2 = await goUpDown(15) const data1 = await goUpDown(30)}
getData().then( (data) => { console.log(data) }, (err) => { console.log(err) })What will be logged on to console, if executed?
Go Up
Go Down
Number Too Large
None of these
Correct answer
Number Too Large
Consider the following JavaScript code.
class Tshirt { constructor(size, price) { this.size = size this.price = price }}
class LargeTshirt extends Tshirt { constructor() { super('large', 500) }}
class MediumTshirt extends Tshirt { constructor() { super('medium') }}
class Order { constructor(item, count) { this.item = item this.count = count }
totalPrice() { try { return this.item.price * this.count } catch { return 'Some Error' } }}
const t1 = new LargeTshirt()const order = new Order(t1, 5)console.log(order.totalPrice())What will be logged on to console, if executed?
NaN
500
2500
Some Error
Correct answer
2500
Consider the following Vue application with JavaScript “app.js” and markup “index.html”
app.js
new Vue({ el: '#app', template: `<div> <div v-for="item in items"> Name:{{item.name}},Count:{{item.count}}, Price:{{item.price*item.count}} <button @click="inscreeseCount(item)">Increese Count</button> <button @click="addToCart(item)">Add To Cart</button> </div> Total Amount: {{amount}} <button @click="buy"> Buy </button> </div>`, data: { cart: [], totalAmount: 50, items: [ { name: 'Apple', count: 1, price: 10 }, { name: 'Orange', count: 1, price: 5 }, ], }, methods: { buy() { if (this.amount > this.totalAmount) { console.log('Failure') } else { console.log('Success') this.cart = [] } }, inscreeseCount(item) { item.count += 2 }, addToCart(item) { this.cart.push(item) }, }, computed: { amount() { let total = 0 this.cart.forEach((item) => { total += item.count * item.price }) return total }, },})index.html
<body> <div id="app"></div></body>Suppose the application is running on “http://127.0.0.1:8080/”. Suppose the user clicks on “Increese count” button associated with the item name “Apple” 10 times and then clicks on the button “Buy”. What will be logged on to console?
Success
Failure
NaN
None of these
Correct answer
Success
Consider the following Vue app with markup “index.html” and JavaScript “app.js”
app.js
const Error = { template: `<div>Result Not Found</div>`,}
const Dashboard = { template: `<div> This is dashboard of {{user}}</div>`, props: ['user'],}
const routes = [ { path: '/dashboard/:user', component: Dashboard, props: true }, { path: '*', component: Error },]
const router = new VueRouter({ routes,})
new Vue({ el: `#app`, template: `<router-view />`, router,})index.html
<body> <div id="app"></div></body>Suppose the application is running on “http://127.0.0.1:8080/”. What will be rendered by the browser for “http://127.0.0.1:8080/#/”?
This is dashboard of User
Dashboard
Error
Result Not Found
Correct answer
Result Not Found
Consider the following flask application.
app.py
from flask import Flaskfrom flask_caching import Cachefrom time import sleep
config = { "CACHE_TYPE": "RedisCache", "CACHE_REDIS_HOST": "localhost", "CACHE_REDIS_PORT": 6379, "CACHE_REDIS_DB": 1}
app = Flask(__name__)app.config.from_mapping(config)cache = Cache(app)
@app.get('/')@cache.cached(timeout=120)def home(): sleep(30) return "hello world"if __name__ == "__main__": app.run(debug=True)Suppose the application is running on “http://localhost:5000”. If user1 visits the URL “http://localhost:5000” and after 50 seconds user2 visits the same URL. What will be the approx difference between the response time for user1 and user2?
0 seconds
30 seconds
120 seconds
None of these
Correct answer
30 seconds
Consider the below javascript program.
exams = ['Jan 2023', 'May 2023', 'Sep 2023']
new Promise((rej, res) => { let count = 2 let a = setInterval(() => { count += 3; const last = exams.pop(); if (count % 2) { exams.push('May 2023') } else if (count % 5 == 0) { clearInterval(a); rej(last); } }, 2000)}).then(d => console.log("Resolved", exams, d)).catch(e => console.log("Rejected", exams, d))What will be the output of the above program, if executed? Also, predict the minimum number of seconds the program will take to complete the execution?
Resolved []
Minimum Time Taken: 12 seconds
Resolved [] May 2023
Minimum Time Taken: 10 seconds
Rejected [May 2023] May 2023
Minimum Time Taken: 12 seconds
Rejected [May 2023]
Minimum Time Taken: 10 seconds
Resolved [] May 2023
Minimum Time Taken: 12 seconds
Rejected [] May 2023
Minimum Time Taken: 10 seconds
Correct answer
Resolved [] May 2023
Minimum Time Taken: 12 seconds
Consider the following Vue application with markup “index.html” and javascript file “app.js”.
index.html:
<div id = "app">
<input v-model = "name" @input = "do_something"> <p> {{age}} </p></div><script scr = "app.js"></script>app.js:
new Vue({ el : "#app", data : { name : "#app", age : 0, },
mounted () { try { this.name = localStorage.getItem("name").split(" ")[0]; this.age = localStorage.getItem("name").split(" ")[1]; localStorage.setItem("name", localStorage.getItem("name").split(" ")[0] + " " + this.name); } catch { this.name = "Default"; this.age = "Default"; } },
methods : { do_something() { localStorage.setItem("name", this.name); localStorage.setItem("age", this.age); } }})Suppose you open “index.html” file in a browser, and type the text “IIT Madras” in the text box shown (after removing the previous text, if any), and hard refresh the page twice, without clicking anywhere. What will be the value shown in the text box, and the “age” placeholder, respectively?
The app will show an error in the console
Default, Default
IIT, Madras
IIT, IIT
Madras, IIT
None of these
Correct answer
IIT, IIT
Fill in code1 & code2, which can be used in Vuex Store to update the “below_average” state variable with the objects of those students who have scored more than 50 marks.
const store= new Vuex.Store({ state:{ student_total:0, students:[ { name : 'Akshay', marks : 52 }, { name : 'Vishwajeet', marks : 78 }, { name : 'Sonali', marks : 43 } ], below_average:[] },
code1:{ belowAverageStudents(state){ code2 }, }})Correct answer
Consider the following JavaScript code.
async function getResponse(url) { try { const response = await fetch(url) try { const data = await response.json() if (response.ok) { return data } else { return response.status } } catch { return 'Network Error' } } catch { return 'Response is not json' }}
getResponse('url').then((data) => { console.log(data)})Suppose ‘url’ returns an HTML response for a get request with 200 status code. What will be logged on to console, if the code is executed?
Response is not json
Network Error
200
None of these
Correct answer
Network Error
Consider the JavaScript code. Suppose the ‘url’ returns a JSON response with 404 status code. What will be logged on to console?
async function getResponse(url) { try { const response = await fetch(url) try { const data = await response.json() if (response.ok) { return data } else { return response.status } } catch { return 'Network Error' } } catch { return 'Response is not json' }}
getResponse('url').then((data) => { console.log(data)})Response is not json
Network Error
404
None of these
Correct answer
404
Consider the following JavaScript code.
class Tshirt { constructor(size, price) { this.size = size this.price = price }}
class LargeTshirt extends Tshirt { constructor() { super('large', 500) }}
class MediumTshirt extends Tshirt { constructor() { super('medium') }}
class Order { constructor(item, count) { this.item = item this.count = count }
totalPrice() { try { return this.item.price * this.count } catch { return 'Some Error' } }}
const t1 = new MediumTshirt()const order = new Order(t1, 5)console.log(order.totalPrice())What will be logged on to console, if executed?
NaN
500
2500
Some Error
Correct answer
NaN
app.js
new Vue({ el: '#app', template: `<div> <div v-for="item in items"> Name:{{item.name}},Count:{{item.count}}, Price:{{item.price*item.count}} <button @click="inscreeseCount(item)">Increese Count</button> <button @click="addToCart(item)">Add To Cart</button> </div> Total Amount: {{amount}} <button @click="buy"> Buy </button> </div>`, data: { cart: [], totalAmount: 50, items: [ { name: 'Apple', count: 1, price: 10 }, { name: 'Orange', count: 1, price: 5 }, ], }, methods: { buy() { if (this.amount > this.totalAmount) { console.log('Failure') } else { console.log('Success') this.cart = [] } }, inscreeseCount(item) { item.count += 2 }, addToCart(item) { this.cart.push(item) }, }, computed: { amount() { let total = 0 this.cart.forEach((item) => { total += item.count * item.price }) return total }, },})Success
Failure
NaN
None of these
Correct answer
Failure
app.js
const Error = { template: `<div>Result Not Found</div>`,}
const Dashboard = { template: `<div> This is dashboard of {{user}}</div>`, props: ['user'],}
const routes = [ { path: '/dashboard/:user', component: Dashboard, props: true }, { path: '*', component: Error },]
const router = new VueRouter({ routes,})
new Vue({ el: `#app`, template: `<router-view />`, router,})index.html
<body> <div id="app"></div></body>This is dashboard of User
This is dashboard of 2
Dashboard
Result Not Found
Correct answer
This is dashboard of 2
app.py
from flask import Flaskfrom flask_caching import Cachefrom time import sleep
config = { "CACHE_TYPE": "RedisCache", "CACHE_REDIS_HOST": "localhost", "CACHE_REDIS_PORT": 6379, "CACHE_REDIS_DB": 1}
app = Flask(__name__)app.config.from_mapping(config)cache = Cache(app)
@app.get('/')@cache.cached(timeout=120)def home(): sleep(30) return "hello world"if __name__ == "__main__": app.run(debug=True)0 seconds
30 seconds
120 seconds
None of these
Correct answer
0 seconds
Consider the below javascript program.
var first = 1;obj1 = { 'first' : 2, 'second' : function some () { console.log(this.first); }}obj2 = { 'first' : 3, 'second' : () => { console.log("Function Invoked !!"); this.second(); }}obj2.second.call(obj1);What will be the output of the above program, if executed?
Function Invoked !!
2
Function Invoked !!
3
Function Invoked !!
1
Function Invoked !!
Error
Error
Correct answer
Function Invoked !!
Error
Consider the following Vue application with markup “index.html” and javascript file “app.js”.
index.html:
<div id = "app"> <my-comp> <template v-slot:first = "slotProps"> This is from {{slotProps.user.name1}} template </template>
<template v-slot:default = "slotProps"> This is from {{slotProps.user.name3}} template </template>
<template v-slot:second = "slotProps"> This is from {{slotProps.user.name2}} template </template> </my-comp></div><script src = "app.js"> </script>app.js:
Vue.component("myComp", { template : `<div> <p> <slot name = "first" v-bind:user="user"> </slot> </p> <p> <slot v-bind:user="user"> </slot> </p> </div> `, data : function () { return { user : { 'name1' : "Rashmi's", 'name2' : "Akshay's", 'name3' : "Sumit's", } } }})
const app = new Vue({ el : "#app",})This is from template
This is from template
This is from Rashmi’s template
This is from Akshay’s template
This is from Sumit’s template
This is from Rashmi’s template
This is from Sumit’s template
This is from Rashmi’s template
This is from Sumit’s template
This is from Akshay’s template
This is from template
This is from template
This is from template
Correct answer
This is from Rashmi’s template
This is from Sumit’s template
Consider the below javascript program.
Correct answer
Suppose an attacker embeds a malicious link in an email or website, causing the victim's browser to unknowingly submit a form that performs an action (e.g., deleting the user’s account) on the target site where the victim is authenticated. Which type of attack is this?
Denial Of Service Attack
CSRF Attack
Flooding Attack
None of these
Correct answer
CSRF Attack
Consider the below javascript program.
async function func() { const num = await Promise.resolve(2); console.log("Second"); return num;}
console.log("First");func().then((data) => console.log(data));console.log("Third");What will be the output of the above program, if executed?
First
Second
Third
2
First
Error
First
Third
Second
undefined
First
Third
Second
2
The output cannot be predicted
Correct answer
First
Third
Second
2
Which of the following is/are valid use(s) of “v-for” directive, assuming “obj” is an object having a number of key value pairs?
v-for = “value in obj”
v-for = “(value, name) in obj”
v-for = “(value, name, index) in obj”
All of these.
Correct answer
All of these.
Which of the following statement(s) is/are true regarding Celery?
A celery system may consist of multiple brokers.
Redis must be used as a message broker for Celery.
The framework does not support periodic scheduling of tasks.
All of these.
Correct answer
A celery system may consist of multiple brokers.