Each item (or question) is providing the row and column position in the table, also the data has two items with the Max of rows and columns. I'm able to create the table using MaxRows and MaxCols data, but I'm struggling to insert the question in the correct cell.

table-pos is a directive that will accept the questions array, row and column index as scope attributes. I have used underscore.js for extracting the correct object from the collection of questions and display question for that position (based on rowPosition and colPosition). The code looks like below:

The main advantage of using the directive is that there is no requirement for the questions in the list to be sorted in any order. So you can add questions in any order in your array. As long as the rowPosition and colPosition has been defined correctly the directive will pick it up.
Plus the directive also supports empty cells/sparse arrays, so if any question for a particular cell is not present, the directive will show empty data.
One drawback is that, if more than 1 question have the same rowPosition and colPosition then only the first question will be picked, and the remaining questions will be silently ignored.
Please note that in case you don't want to use underscope.js, you can still use plain JavaScript to detect the correct question from the list. However, usage of underscore.js makes it easier, as the underlying logic is abstracted.