Python 2, 139 133 129 bytes
n=input() for i in range(9):w=' ?|'[i&2];s=' / /\/ /\_ /\ \/\__ \/\ \/_ \/ /\/ /'[i::9]*n;s=(s,' %s '%s[1:-1])[i%4>1];print w+s+w This one just builds and prints line by line.
Here's the code in ungolfed form:
n=int(input()) # The list with all the knot pieces l= [' __ ', '/ \\', ' /\/', '/\/ ', '\ \/', '/\ \\', ' /\/', '/\/ ', '\__/'] # The first and last columns w = ' || || ' # Loop for each row for i in range(9): # Exception for the first and last character in the knot (in some rows) s = l[i]*n if i % 4 > 1: s = ' ' + s[1:-1] + ' ' # Print the knot for this row print(w[i] + s + w[i]) Edit: I changed the language to python 2, to be compatible with my answer for #3my answer for #3 (and it also saves 6 more bytes)