Home / Past papers / MAD2 End Term / this paper

Suppose an application is loaded from an origin "https://xyz.com". Which of the following origins will result in a CORS error, while making a fetch call, by default?

https://xyz.com

https://abc.xyz.com

https://xyz.com/page1

https://xyz6.com
Consider the following JavaScript code. What will be logged on to console, if executed?```javascript
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)
}
)
```
Consider the following JavaScript code. What will be logged on to console, if executed?```javascript
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())
```
Consider the following Vue application with JavaScript “app.js” and markup “index.html”
Consider the following Vue application with JavaScript “app.js” and markup “index.html” ```javascript
app.js
new Vue({
el: '#app',
template: `
<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>
`,
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
```html
<body>
<div id="app"></div>
</body>
```
Suppose the application is running on "http://127.0.0.1:8080/". Suppose the user clicks on "Increase count" button associated with the item name "Apple" 10 times and then clicks on the button "Buy". What will be logged on to console?
Consider the following Vue app with markup “index.html” and JavaScript “app.js” app.js
```javascript
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
```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/#/"?
Consider the following flask application. app.py
```python
from flask import Flask
from flask_caching import Cache
from 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?
Consider the below javascript program. ```javascript
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?
Consider the following Vue application with markup “index.html” and javascript file “app.js”. 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?index.html:
```html
<div id = "app">
<input v-model = "name" @input = "do_something">
<p> {{age}} </p>
</div>
<script scr = "app.js"></script>
```
app.js:
```javascript
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);
}
}
})
```
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. ```javascript
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
},
}
})
```
```
code1: mutations
code2: students.forEach(student=>{
if(student.marks > 50)
below_average.push(student)
})
```
```
code1: actions
code2: state.students.forEach(student=>{
if(student.mark > 50)
below_average.toppers.push(student)
})
```
```
code1: actions
code2: context.students.forEach(student=>{
if(student.marks < 55)
context.below_average.push(student)
})
```
```
code1: mutations
code2: state.students.forEach(student=>{
if(student.marks > 50)
state.below_average.push(student)
})
```
Consider the following JavaScript code. 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?```javascript
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)
})
```
Consider the JavaScript code. Suppose the ‘url’ returns a JSON response with 404 status code. What will be logged on to console? ```javascript
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)
})
```
Consider the following JavaScript code. What will be logged on to console, if executed?```javascript
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())
```

Consider the following Vue application with Javascript "app.js" and markup "index.html"
Suppose the application is running on "http://127.0.0.1:8080/". Suppose the user clicks on
"Increase count" button associated with the item name "Apple" 10 times then clicks on
"Add To Cart" and then clicks on the button "Buy". What will be logged on to console?
app.js
```javascript
new Vue({
el: '#app',
template: `
<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>
`,
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
```html
<body>
<div id="app"></div>
</body>
```

Consider the Vue application mentioned. What will be rendered by the browser for the URL "http://127.0.0.1:8080/#/dashboard/2"?
```javascript
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>
```

Consider the flask application mentioned. 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?
```python
app.py
from flask import Flask
from flask_caching import Cache
from 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)
```
Consider the below javascript program. What will be the output of the above program, if executed?```javascript
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);
```
Consider the following Vue application with markup “index.html” and javascript file “app.js”. index.html:
```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:
```javascript
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",
})
```
Consider the below javascript program. ```javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), (i+1)*2000);
}
```
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?
```text 0 1 2 Minimum Time Taken: 6 seconds ```

0 1 2 Minimum Time Taken: 12 seconds

3 3 3 Minimum Time Taken: 12 seconds

3 3 3 Minimum Time Taken: 6 seconds
Consider the below javascript program. What will be the output of the above program, if executed?```javascript
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");
```Auto-generated summary from the source site. Handy as a checklist; the lessons above explain each idea from scratch.
Here’s a structured summary of core topics, concepts, principles, and equations for the "Modern Application Development II" exam, along with Mermaid knowledge graphs to visualize relationships.
SMTP (Simple Mail Transfer Protocol)
25 (unencrypted), 587 (TLS).IMAP (Internet Message Access Protocol)
143 (unencrypted), 993 (SSL/TLS).POP3 (Post Office Protocol 3)
GET, POST, PUT, DELETE).Webhooks: Machine-to-machine communication via HTTP callbacks (not WebSockets).
CORS Headers:
Access-Control-Allow-Origin: Specifies allowed origins.Access-Control-Allow-Methods: Allowed HTTP methods.OPTIONS request sent before actual request for non-simple requests.Mitigation:
Types:
Mitigation:
Content Security Policy (CSP) headers.map, filter).Asynchronous JS:
.then()/.catch() for async operations.Methods:
document.getElementById()element.addEventListener()element.innerHTMLDirectives:
v-for: Loop over arrays/objects.
<div v-for="(value, key, index) in object"></div>v-model: Two-way data binding.v-bind: Bind attributes (:class, :style).v-on: Event handling (@click).Components:
<slot>).Vuex (State Management):
<router-view>).Polling:
Caching:
Flask-Caching).Cache-Control, ETag.Route Handling:
@app.route('/')
@cache.cached(timeout=120) # Cache for 120 seconds
def home():
return "Hello World"Point-to-Point Communication:
O(n²) connections (each node connects to every other node).Central Message Broker (e.g., RabbitMQ, Kafka):
O(n) connections (each node connects to the broker).CDN (Content Delivery Network):
How it works:
Components:
Features:
Celery Beat).| Attack | Description | Mitigation |
|---|---|---|
| XSS | Inject malicious scripts. | Input sanitization, CSP headers. |
| CSRF | Trick users into submitting requests. | CSRF tokens, SameSite cookies. |
| CORS Misconfig | Overly permissive CORS headers. | Restrict Access-Control-Allow-Origin. |
| SQL Injection | Inject SQL queries. | Use ORM/parameterized queries. |
Types:
Closures & this Binding:
var vs. let/const in loops (e.g., setTimeout with var leaks i).Promise Chaining:
.then() executes after promise resolves..catch() handles rejections.Event Loop:
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000); // Output: 3, 3, 3
}
Fix: Use let or IIFE.
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000); // Output: 0, 1, 2
}
console.log("First");
Promise.resolve().then(() => console.log("Second"));
console.log("Third");
// Output: First, Third, Second
async function func() {
await Promise.resolve(7);
console.log("Second");
return 7;
}
console.log("First");
func().then(data => console.log(data));
console.log("Third");
// Output: First, Third, Second, 7
mutations: {
belowAverageStudents(state) {
state.below_average = state.students.filter(s => s.marks > 50);
}
}
computed: {
amount() {
return this.cart.reduce((total, item) => total + item.price * item.count, 0);
}
}
<!-- Parent -->
<my-comp>
<template v-slot:default="slotProps">
{{ slotProps.user.name }}
</template>
</my-comp>
<!-- Child (my-comp) -->
<div>
<slot :user="user"></slot>
</div>
from flask_caching import Cache
cache = Cache(app, config={'CACHE_TYPE': 'RedisCache'})
@app.route('/')
@cache.cached(timeout=120) # Cache for 120 seconds
def home():
return "Hello World"
Access-Control-Allow-Origin: https://trusted-site.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type
JavaScript:
this binding, and event loop.var vs. let behaves in loops.Vue.js:
v-for, v-model, v-bind).Web Protocols:
Backend:
Security:
Distributed Systems:
O(n²) connections.O(n) connections.Caching:
Good luck! 🚀 Review the graphs and key concepts thoroughly.