Question 1
Which of the following statements is/are false.
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 ADD3: 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 false.
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 protocol to retrieve email from an email server.
IMAP is a mail delivery protocol.
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 always 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.
Which of the following is correct regarding Celery?
Celery is a task queue.
It needs broker to function.
Celery can be used to schedule the task.
None of these.
Correct answers
Celery is a task queue.
It needs broker to function.
Celery can be used to schedule the task.
Which of the following statement(s) is/are true 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
The language supports the concept of first class functions.
The language can be used for DOM manipulation.
Which of the following method(s) does not guarantee 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
Periodic reloading of web-page
Vue bindings to update data reactively
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 false?
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 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 web socket protocol.
A webhook receiver must be deployed on the same origin as the webhook initiator.
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.
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”
None of these
Correct answers
v-for = “value in obj”
v-for = “(value, name) in obj”
v-for = “(value, name, index) in obj”
Correct answers
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 false 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
It is recommended to cache the social networking apps feed responses for a longer duration.
A browser cannot cache JavaScript corresponding to a web page.
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.
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.
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(12)}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
None of these.
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 there is an network error and fetch request to the ‘url’ fails. What will be logged on to console, if the code is executed?
Response is not json
Network Error
200
None of these.
Correct answer
Response is not json
Consider the 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 the ‘url’ returns a JSON response with 500 status code. What will be logged on to console?
Response is not json
Network Error
404
500
Correct answer
500
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
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)">Increase 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/”. If the user clicks on “Increese Count” and “Add to cart” button associated with the item name “Apple” once. Then user clicks on “Increese Count” and “Add to cart” button associated with the item name “Orange” once 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>What will be rendered by the browser for the URL http://127.0.0.1:8080/#/dashboard/7”?
This is dashboard of User
This is dashboard of 7
Dashboard
Result Not Found
Correct answer
This is dashboard of 7
Consider the following Vue application with markup “index.html” and JavaScript “app.js”
app.js
const Home = { template: `<div> <slot name="navbar"> This is navbar</slot> <slot></slot> <slot name="footer"></slot> </div>`,}
new Vue({ el: '#app', template: `<Home> <template slot="footer">This is Footer</template> <template slot="navbar"> This is header</template> <div>Welcome to exam</div> </Home>`, components: { Home, },})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 the URL “http://127.0.0.1:8080/”?
Correct answer
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=40)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 3 minutes 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
0 seconds
Correct answer
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?
Correct answer
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 * 2 } 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
5000
Correct answer
5000
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)">Increase 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” 5 times and then clicks on “Increese Count” button associated with the item name “Orange” once 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/#/user”?
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=40)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
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();What will be the output of the above program, if executed?
Correct answer
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); } }, 1000)}).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?
Correct answer
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